In einem der von mir verwendeten vim-Plugins haben wir darüber nachgedacht, künftig Python vs Vimscript zu verwenden ( https://github.com/python-mode/python-mode/issues/813#issuecomment-344754563 ).
Ich verstehe, dass Sie Python verwenden können, um Plugins für VIM ( https://dzone.com/articles/how-write-vim-plugins-python ) zu schreiben, solange Sie ein +python
/ +python3
in Ihrer vim-Distribution haben, sollte das Plugin funktionieren.
Ich habe keine Plugins für VIM geschrieben, aber ich denke, das Schreiben eines OpenSource-VIM-Plugins für die Python-Entwicklung in Python ist besser als das Schreiben in VimL. Sie werden feststellen, dass es mehrere Benutzer gibt, die Lösungen vorgeschlagen haben, VimL jedoch nicht kennen und es nicht lernen möchten, da sie Python bereits kennen und in Python arbeiten. Wenn wir also in Zukunft neuen Code in Python schreiben, können wir mehr Benutzer sowie mehr Mitwirkende gewinnen und mehr Wert schaffen.
Frage
Was sind die Nachteile beim Schreiben eines Vim-Plugins mit Python vs VimL? (Nehmen wir an, dass alle Benutzer, die dieses Plugin verwenden, bereits +python
/ haben +python3
, weil sie es zur Entwicklung von Python verwenden werden.)
quelle
Antworten:
TL; DR:
Anforderung
+python
/+python3
Unterstützung für ein Python-basiertes Entwicklungs-Plugin. Das klingt völlig vernünftig.Über Vim-Plugins und menschliches Verhalten
Im Allgemeinen möchten Menschen, dass die Dinge einfach erscheinen und "nur funktionieren". Wenn es um Vim-Plugins geht, möchten Vimmer normalerweise Plugins ohne oder mit sehr wenigen Abhängigkeiten. Grundsätzlich sollte es so einfach wie ein
git clone
und / oder ein paar Zeilen in ihrervimrc
Datei sein. Je mehr ein Plugin konfiguriert werden muss, um anfänglich zu funktionieren, oder je mehr Abhängigkeit erforderlich ist, desto mehr wird nur eine Eintrittsbarriere hinzugefügt.Ein gutes Beispiel für dieses Verhalten ist CommandT vs CtrlP :
Jetzt würden Sie annehmen, dass CommandT populärer ist, zumal es zuerst herauskam, aber das ist nicht der Fall. CommandT hat ungefähr 2000 Benutzer und CtrlP hat ungefähr 20.000 Benutzer . Meiner Meinung nach verursachen die Anforderungen von CommandT eine Eintrittsbarriere. Sie können
git clone
Ihre vim-Dotfiles einfach nicht verwenden und mit CommandT auf einem neuen Computer wie mit CtrlP arbeiten.Kontrapunkt:
Das ist C + Ruby nicht
+python
/+python3
. Es gibt eine integrierte Unterstützung für Python. Sie sind absolut richtig. Ein Beispiel, das diesen Punkt beweist , wäre Gundo (~ 5.000) unter Verwendung von+python
vs undotree (~ 1.000), was reines VimL ist. Ich würde meiner persönlichen Meinung nach argumentieren, dass Undotree weniger bekannt ist als Gundo (der zuerst auf den Markt kommt), und die Tatsache, dass viele Undotree verwenden, hat möglicherweise damit zu tun, dass es sich um reines VimL gegen Python handelt.Gut genug für mich, ich werde Python nur für mein Vim-Plugin verwenden!
Am Ende des Tages muss man einiges über Vim und einige VimL wissen, um das Vim-Plugin in Python zu erstellen. Das
vim
Modul ist viel besser als zuvor, erfordert aber dennoch eine ganze Reihe von VimL-eval-ähnlichen Situationen:Siehe
:h python-vim
.Sie benötigen außerdem VimL, um den Python-Teil Ihres Plugins zu "booten". Es gibt also kein Entkommen von VimL, sondern nur eine Reduzierung der Menge.
Schlussfolgerungen
Wenn Sie ein Bedürfnis haben
+python
/+python3
dann verwenden Sie es auf jeden Fall. Es hört sich so an, als hätten Sie einen wunderbaren Anwendungsfall für die Python-Unterstützung. Meiner Meinung nach werden Sie VimL / Vimscript jedoch nicht vollständig entkommen. Ich würde empfehlen, Vim-Dinge in VimL zu tun und Python für Dinge zu verwenden, die in VimL schwer / knifflig / langsam sind.quelle
git submodule
aus Sicht der Entwicklung könnte einige Vorteile mit sich bringen , aber vielleicht müssen wir dies in einem Bash-Skript zusammenfassen, damit die Benutzer nicht zu viele Hürden überwinden müssen, um dieses Plugin installieren zu können. Auf diese Weise können wir auf die Bedenken der Entwickler und Benutzer eingehen.Wenn ich für mich selbst spreche, hauptsächlich unter Windows, aber manchmal auch auf anderen Plattformen, war ich mit der Realität der Python-Integration nie zufrieden. Ich schätze, dass es für die Leute da ist, die es brauchen, aber es funktioniert nicht "nur". Sie müssen die genaue Version der Python-DLL erhalten, und es war ein Versuch und Irrtum für mich, als ich es das letzte Mal tat, und letztendlich stellte ich fest, dass die Auszahlung die Mühe nicht wert war.
Heute habe ich einige Funktionen, die ich in Python geschrieben habe und die ich in Vim verwende, und ich löse sie mit einem
system('python ...')
Aufruf aus, um das Skript auszuführen.quelle