Was ist zu beachten, um ein Vim-Plugin zu erstellen?


11

Meine Frage ist also einfach. Ist es eine gute Idee, Vim-Skripte zu lernen, nur um Vim zu erstellen, oder sollten wir einige andere akzeptierte Sprachen übernehmen.

Zum Beispiel öffnet dieser Link ein YouTube-Video, in dem gezeigt wird, wie Python zum Erstellen von Vim-Plugins verwendet wird.

Vim-Skripte sind nur dann nützlich, wenn Sie einige Vim-Plugins erstellen möchten. Gibt es also eine bestimmte Sache, die nur ausgeführt werden kann, wenn nur Vim-Skripte verwendet werden?


2
Beachten Sie, dass viele Benutzer Vimscript verwenden, um ihr Vim (sehr gründlich) zu konfigurieren, ohne Plugins zu erstellen oder zu verteilen.
VanLaser

Antworten:


12

Meine Plugins sind zu 99% in VimL. Der Grund ist, dass VimL dort verfügbar ist, wo vim installiert ist. Mit anderen Sprachen ist es viel komplizierter - zum Beispiel ist Python selten auf den Windows-Boxen installiert, auf denen ich Vim verwende.

Natürlich ist VimL umständlich, es fehlen viele coole Funktionen, aber zumindest ist es einfacher, etwas Tragbares zu haben.

Die 1% nicht in VimL ist, wenn ich mit einer externen API interagieren muss, die Python-Bindungen bietet.

Übrigens kann fast alles, was Sie über VimL lernen, interaktiv verwendet werden, wenn Sie mit Befehlen wie spielen :substitute. Die meisten Zuordnungen oder Makros benötigen auch kein Python.


1
Ich finde VimL eigentlich nicht so umständlich. Natürlich stimme ich zu, dass es an coolen Features und Funktionen von höheren Sprachen wie Python mangelt, aber nachdem ich einige Zeit damit gearbeitet habe, finde ich es sehr angenehm, mit VimL zu arbeiten. Ich denke, der Ruf von VimL ist schlechter als nötig.
Karl Yngve Lervåg

Gut. Ich muss zugeben, dass seit vim5.x (als ich anfing, es zu verwenden) viele Fortschritte erzielt wurden. Aber es gibt immer noch Eckfälle, in denen wir komplexe Dinge tun müssen. Siehe zum Beispiel map(), dass Zeichenfolgen oder (die nicht verwandten) erwartet :map. Ich muss oft mit / um die String-Auswertung spielen, um zu meinem Ende zu kommen, wie das Generieren von Mappings oder das Verarbeiten einer Liste von Funktionsaufrufen, ...
Luc Hermitte

Das Schreiben von Vim-Plugins in einer anderen Sprache befreit Sie ohnehin nicht vom Erlernen von VimL, ​​da die Bindungen zu Python / Ruby / etc. sind ziemlich begrenzt und Sie execerhalten ohnehin unweigerlich Schnipsel von VimL. Sie können Ihre Kernlogik in einer Sprache schreiben, in der Sie möglicherweise viel effizienter arbeiten können, aber Sie müssen noch ziemlich viel VimL lernen.
Hobbs

12

Wenn Sie Plugins schreiben möchten, sollten Sie unbedingt den schönen Artikel "Writing Vim Plugins" von Steve Losh lesen . nicht nur für die Entscheidung, ob Sie bei VimL bleiben oder nicht, sondern auch für die Best-Practice-Ratschläge.

Es enthält auch eine kleine Diskussion über Scripting Vim mit anderen Sprachen :

Wenn Sie eine andere Sprache verwenden, müssen die Benutzer Ihres Plugins zunächst eine Version von Vim verwenden, die mit Unterstützung für diese Version kompiliert wurde. Heutzutage ist dies normalerweise kein Problem, aber wenn Sie möchten, dass Ihr Plugin überall ausgeführt wird, ist dies keine Option.

Die Verwendung einer anderen Sprache erhöht den Overhead. Sie müssen nicht nur Vimscript lernen, sondern auch die Schnittstelle zwischen Vim und der Sprache. Bei kleinen Plugins kann dies das Projekt komplexer machen, als es spart, bei größeren Plugins kann es sich jedoch amortisieren. Es liegt an Ihnen zu entscheiden, ob es sich lohnt.

Schließlich isoliert Sie die Verwendung einer anderen Sprache nicht vollständig von den Exzentrizitäten von Vimscript. Sie müssen noch lernen, wie man die meisten Dinge in Vimscript macht. Wenn Sie eine andere Sprache verwenden, können Sie das meiste einfach sauberer zusammenfassen, als Sie es sonst könnten.

Ich habe die Erfahrung gemacht, dass ich selbst dann, wenn ein Nicht-VimL-Plugin besser ist, später zu einer reinen VimL-Alternative wechsle, hauptsächlich wegen der Portabilität. Vim läuft auf praktisch jedem System (sogar auf hässlichen und alten Legacy-Systemen), und der Aufwand für das Einrichten der Abhängigkeiten oder das vorübergehende Deaktivieren dieses Plugins lohnt sich nicht (insbesondere, wenn Sie immer wieder vergessen, dass Sie es deaktiviert haben und versuchen, seine Zuordnungen / Befehle zu verwenden). .

Selbst wenn es einfacher ist, die Abhängigkeiten einzurichten, können einige Probleme auftreten (z. B.: Einige Python-basierte Plugins funktionieren nicht zu 100%, wenn sie aus freigegebenen Ordnern auf virtuellen Maschinen stammen). Deshalb verwenden die wenigen Plugins, die ich geschrieben habe, nur VimL.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.