Cosa seguire per creare un plugin vim?


11

Quindi la mia domanda è semplice. È una buona idea imparare lo scripting di VIM solo per creare VIM o dovremmo adottare alcune altre lingue più accettate.

Ad esempio Questo link apre un video di YouTube che mostra come usare Python per creare plugin vim.

Gli script Vim non sono del tutto utili a meno che uno non intenda creare alcuni plugin Vim. Quindi c'è qualcosa di particolare che non può essere fatto a meno che gli script vim non vengano usati solo?


2
Nota che molte persone usano vimscript per configurare (in modo molto approfondito) il proprio Vim, senza creare o distribuire plugin.
VanLaser,

Risposte:


12

I miei plugin sono al 99% in VimL. Il motivo è che VimL è disponibile dove è installato vim. È molto più complicato con altre lingue - ad esempio, è raro che abbia installato Python sui box di Windows dove uso Vim.

Naturalmente VimL è ingombrante, manca molte funzioni interessanti, ma almeno è più facile avere qualcosa di portatile.

L'1% non in VimL è quando ho bisogno di interagire con un'API esterna che offre collegamenti Python.

A proposito, quasi tutto ciò che apprendi su VimL può essere utilizzato in modo interattivo quando giochi con comandi come :substitute. La maggior parte delle mappature o delle macro non ha nemmeno bisogno di Python.


1
In realtà non trovo VimL così ingombrante. Ovviamente, sono d'accordo sul fatto che manchi le caratteristiche e le funzionalità interessanti di linguaggi di livello superiore come Python, ma dopo aver lavorato con esso per un po 'di tempo, trovo VimL abbastanza piacevole con cui lavorare. Penso che la reputazione di VimL sia peggiore del necessario.
Karl Yngve Lervåg,

Bene. Devo ammettere che molti progressi sono stati fatti da vim5.x (quando ho iniziato a usarlo). Ma ci sono ancora casi angolari in cui dobbiamo fare cose complesse. Vedere ad esempio map()che prevede stringhe o (non correlato) :map. Spesso devo giocare con / intorno alla valutazione delle stringhe per arrivare alle mie estremità come generare mappature o elaborare un elenco di chiamate di funzioni, ...
Luc Hermitte,

Scrivere plugin di Vim in un'altra lingua non ti libera dall'apprendimento di VimL, ​​perché i collegamenti a Python / Ruby / etc. sono piuttosto limitati e inevitabilmente execfinirai comunque con i frammenti di VimL. Ti consente di scrivere la tua logica di base in una lingua in cui potresti essere in grado di lavorare in modo molto più efficiente, ma hai ancora bisogno di imparare VimL.
Hobbs,

12

Se hai intenzione di scrivere plugin dovresti assolutamente leggere il simpatico articolo "Writing Vim Plugins", di Steve Losh ; non solo per decidere se restare con VimL o meno, ma per i consigli sulle migliori pratiche.

Contiene anche una piccola discussione sullo scripting Vim con altre lingue :

Innanzitutto, l'utilizzo di un'altra lingua richiede agli utenti del plug-in di utilizzare una versione di Vim compilata con il supporto per quella versione. Al giorno d'oggi di solito non è un problema, ma se vuoi che il tuo plugin funzioni ovunque, non è un'opzione.

L'uso di un'altra lingua aggiunge un sovraccarico. Devi imparare non solo Vimscript ma anche l'interfaccia tra Vim e la lingua. Per plug-in di piccole dimensioni ciò può aggiungere più complessità al progetto di quanto non risparmi, ma per plug-in più grandi può ripagarsi. Sta a te decidere se ne vale la pena.

Infine, l'uso di un'altra lingua non ti isola completamente dalle eccentricità di Vimscript. Devi ancora imparare a fare la maggior parte delle cose in Vimscript: l'uso di un'altra lingua ti consente semplicemente di riassumere la maggior parte di questo in modo più ordinato di quanto potresti fare altrimenti.

La mia esperienza è che anche quando un plug-in non VimL è migliore, finisco per passare a un'alternativa VimL pura in seguito, principalmente a causa della portabilità. Vim funziona praticamente su qualsiasi sistema (anche i vecchi e brutti sistemi legacy) e non vale la pena sovraccaricare l'impostazione delle dipendenze o la disabilitazione temporanea di quel plugin (soprattutto se si dimentica di averlo disabilitato e si cerca di usare i suoi mapping / comandi) .

Anche quando è più semplice impostare le dipendenze, è possibile riscontrare alcuni problemi (ad esempio: alcuni plug-in basati su Python non funzionano al 100% quando provengono da cartelle condivise su macchine virtuali). Ecco perché i pochi plugin che ho scritto usano solo VimL.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.