Paketverwaltung (Plugin) für Vim


81

Emacs 24 scheint einen Paketmanager zu haben. Welche Paketverwaltungsoptionen gibt es für Vim?


1
Was ist ein Paketmanager in diesem Zusammenhang? So etwas wie VimExplorer?
Matt Ball

Etwas, das Plugins von Drittanbietern aus einem zentralen Repository installiert und verwaltet.
Zeit

1
Nun, vim hat ein zentrales Repo (vim.org), ein Paketsystem (vimballs) und Skripte, die prüfen, ob Sie das neueste und das beste haben (einige von ihnen erinnern sich jetzt nicht an Namen) ... was mehr willst du :-)
Rook

3
Ich war mir der Vimballs nicht bewusst und korrigiere mich, wenn ich falsch liege, aber es scheint immer noch, dass Sie a) die Website besuchen, b) die VBA-Datei herunterladen müssen - falls vorhanden, was anscheinend nicht der Fall ist Die meisten Plugins - und c) führen nur dann Vimballs aus. Nicht genau das, was ich mir vorgestellt hatte (vgl. RubyGems) :)
ntimes

Abstimmung zum Schließen als Werkzeug rec. Am vi: vi.stackexchange.com/questions/388/…
Ciro Santilli 6 冠状 病 六四 事件 6

Antworten:


85

Ich verwende jetzt VimPlug für mein eigenes Vim-Setup und empfehle es auf jeden Fall. Die Installation ist sehr einfach und schnell, hübsch und effektiv!

VimPlug Video

Ich habe Vundle in dieser Antwort empfohlen . Aber Vundle wird nicht mehr gewartet und es gibt bessere Alternativen.


Der Autor hat die Pflege von vundle gmarik.info/blog/2014/02/04/… eingestellt . Sie können immer noch Beiträge auf Github sehen, aber vielleicht kann jemand, der besser informiert ist, die Zukunft von Vundle kommentieren.
kirill_igum

Er scheint ein wenig verärgert darüber zu sein, dass NeoBundle seinen Code meistens nur kopiert hat, anstatt eine Gabelung zu erstellen. Aber wenn er ihn nicht mehr pflegt, wird NeoBundle vielleicht übernehmen?
Jostein

Das GitHub-Repo scheint mir aktiv zu sein. In den Kommentaren des Links in Ihrem Update scheint sich auch jemand gemeldet zu haben, um zu helfen.

Mein Schmerz bei Vundle ist, dass es nur Git (hauptsächlich Github-Projekte) als Quelle verwendet. Wenn Sie dort jedoch nach einem bekannten Projekt suchen, z. B. TagList, erhalten Sie eine Reihe von "Spiegeln" von der offiziellen Vim-Plugin-Site. Ich vertraue keinem von denen für die Sicherheit. Deshalb verwende ich weiterhin den guten alten Pathogen mit meinem eigenen von Github gepflegten Bundle-Verzeichnis .
KFL

@KFL VAM hat einen Plugin-Index , der theoretisch die kanonischste Quelle für jedes Plugin enthält, sei es in einem Git-Repo oder auf vim.org. Die Community wird beibehalten, aber es gibt nur ein Repo für jedes Plugin. Das ist also ein Anfang. (Und Sie können es selbst aktualisieren, da der Index ein Git-Repo ist.)
Jpaugh

38

Die Plugin-Verwaltung für vim war früher ein Problem, da Plugin-Dateien über das gesamte persönliche vim-Laufzeitverzeichnis verteilt wurden, z. ~/.vimfür * nix System. Sobald ein Plugin installiert ist, ist es schwierig, es zu aktualisieren, da es keine einfache Möglichkeit gibt, die veralteten Plugin-Dateien zu entfernen, was ein notwendiger Schritt ist.

Zu Beginn möchte ich meine persönlichen Anforderungen an ein feines Plugin-Management-Tool auflisten:

  1. soll in reinem VimL geschrieben sein
  2. soll Plugins in ihrem eigenen Verzeichnis installieren
  3. Plugins automatisch laden, wenn vim startet, schön nach Bedarf zu laden
  4. muss über eine integrierte Methode zum Installieren, Aktualisieren und Entfernen von Plugins verfügen
  5. schön, eine eingebaute Suchmethode zu haben, benötigte Plugins
  6. muss in der Lage sein, benötigte Plugins in einer Datei zu deklarieren
  7. schön, einen Mechanismus zur Lösung von Abhängigkeiten zu haben

Es gibt viele Implementierungen ( Vim-Scripts.org bietet eine umfassende Zusammenfassung aller verfügbaren Tools). Ich werde nur über einige wichtige Tools anhand ihrer Erstellungsreihenfolge sprechen.

vimball war der erste Versuch, das Problem zu lösen, und war tatsächlich eine halboffizielle Lösung, bei der viele Plugins *.vbalange Zeit zusammen mit einem Paket ausgeliefert wurden. In Kombination mit GetLatestVimScripts bildete dies den traditionellen Weg für die Verwaltung des vim-Plugins.

Auch wenn nach wie vor das Problem , bis blieb Tim Pope ‚s Erreger ( Github Repo ), die jedes Plugin in ein eigenes Verzeichnis platziert und lädt sie bei der Inbetriebnahme durch die‚rtp (runtimepath)‘Modifizierung des vim, auftauchten. Dies ist ein großer Fortschritt - zusammen mit vim-scripts.org, das von git / github und anderen Tools (z. B. vimmer ) gehostet wird , bildet es die moderne Art der Verwaltung von vim-Plugins. Es gibt viele Artikel und Videos zu diesem Thema.

Als Plugin, das die Plugins verwaltet, fehlen Pathogen noch einige Kernfunktionen wie das Suchen, Installieren, Aktualisieren und Entfernen der Plugins. Infolgedessen stieg VAM (Vim-Addon-Manager) ( Github Repo ) aus. VAM bietet fast alles, was für den Plugin-Manager erforderlich ist: Platziert Plugin-Dateien in einem eigenen Verzeichnis, lädt Plugins beim Start von vim, sucht / installiert / aktualisiert / entfernt Plugins in der ex-Befehlszeile, die in reinem VimL geschrieben sind, verwaltet seine eigene zentrale Infodatenbank für Plugins löst sogar die Plugin-Abhängigkeiten auf. Es scheint, dass VAM derjenige sein sollte, den wir als voll ausgestatteten Vim-Plugin-Manager benötigen, aber aus meiner Sicht ist der Ansatz, den VAM verfolgt, etwas unelegant und manchmal überentwickelt. Obwohl es immer noch ein wunderbares Plugin ist und es sich lohnt, es zu benutzen.

Dann kam Tom Links Tplugin ( Github Repo ), das den Erreger verbesserte, indem Plugins nur geladen wurden, wenn verwandte Befehle oder Funktionen aufgerufen wurden, ähnlich wie bei AsNeeded . Außerdem hat es eine Art Abhängigkeitslösungsmechanismus, der nett erscheint.

In Finnland schuf Gmarik Vundle ( Github Repo ), einen Nachfolger von Tim Popes Erreger, inspiriert von Rubys BundlerEs bietet eine bessere Benutzeroberfläche und zusätzliche Verwaltungsfunktionen. Vundle to Vim ist Bundler einem Ruby-Projekt sehr ähnlich. Nachdem in vimrc Plugins deklariert wurden, übernimmt vundle den Rest, einschließlich des Installierens / Aktualisierens und Entfernens von Plugins, über die ex-Befehlszeilenschnittstelle. Am wichtigsten ist, dass vundle in reinem VimL implementiert ist. Mit Hilfe von vundle kann die Verwaltung der vim-Konfiguration auf mehreren Computern mit nur einer einfachen vimrc-Datei erfolgen. Als modernes Plugin-Management-Tool verlässt sich vundle auf Git und kann das Plugin direkt von Github installieren. Vundle bietet auch eine ausgefallene interaktive Oberfläche zum Suchen und Installieren von Plugins.

Vundle erfüllt meine Anforderungen zwar nicht vollständig, geht aber in die richtige Richtung, was für mich ein guter Ausgangspunkt zu sein scheint.

Hier finden Sie eine Diskussion und einen weiteren Vergleich zwischen Vim-Plugin-Managern des VAM-Autors MarcWeber.


2
Nach dieser großartigen Antwort scheint Neobundle die logische Entwicklung von Vundle
Warten auf Dev ...

Es ist großartig, einen Überblick über die Entwicklung der Vim-Paketmanager zu haben - sehr nützlich und froh, dass ich Vundle verwende, da ich keine komplexen Anforderungen habe.
RichVel

@RichVel, Umgekehrt bin ich froh, dass ich VAM verwende, da ich eine sehr komplexe Anforderung habe: Ich möchte, dass die tägliche Verwendung sehr einfach ist. Es ist sogar ziemlich einfach, neue Plugins hinzuzufügen, wenn nicht alle im Index ( vim-pi )
verfügbar sind

25

Es gibt auch pathogen.vim

http://www.vim.org/scripts/script.php?script_id=2332

Obwohl es nicht genau das ist, wonach Sie fragen, bietet es eine Möglichkeit, Kassen von Ihren Githubs und Bitbuckets zu verwalten.

Dies ist gut, da es die Verzeichnisstruktur des Plugins trennt. Sie können also ein Repository des Plugins auschecken und eine ordnungsgemäße Versionskontrolle erhalten, anstatt sich beim Aktualisieren des Codes auf den Betreuer zu verlassen. Es ist auch nicht darauf angewiesen, dass der Autor des Plugins das Paket gemäß den anderen genannten Optionen einrichtet / verpackt.

Es gibt einige andere Plugins auf vim.org, die diese Aufgabe ausführen, obwohl ich sie momentan nicht finden kann


12

Ich verwende momentan ein handgefertigtes Setup, aber ich sage mir immer wieder, dass ich es irgendwann mal ausprobieren soll (die Links haben alle mit demselben Plugin zu tun):

  1. vim-addon-manager : Plugins einfach verwalten und aktualisieren; ein Plugin von Marc Weber (@ vim.org)
  2. GitHub-Profil von Marc Weber; Er hat eine Reihe von VAM-bezogenen Repos
  3. Vim-Plugin-Manager @ Vim Wiki - der Name der Seite ist unterschiedlich, aber eigentlich ist das gleiche Plugin gemeint

Ich habe es noch einmal nicht selbst versucht, aber es sieht auf jeden Fall vielversprechend aus.


5

Vim.org + Vimballs + GetLatestVimScripts wird derzeit bevorzugt für die Verwaltung von Vim-Plugins entwickelt.

:h GetLatestVimScripts

Die schlechten Dinge daran:

  • unterstützt Windows nicht (GetLatestVimScripts verwendet wget AFAIR)
  • vim.org hat viele Plugins, die GLVS und Vimball nicht kennen.

7
Sie können wget unter Windows installieren, wenn Sie Vim unter Windows installieren konnten :)
wRAR

3

Schauen Sie sich NeoBundle an , den ultimativen Paketmanager für vim. Es ist eine Gabelung von Vundle .


4
Was sind die Unterschiede zwischen den beiden?
Peter Gibson

Aus der NeoBundle-Readme-Datei: "Die aktive Entwicklung auf NeoBundle wurde gestoppt. Die einzigen zukünftigen Änderungen werden Fehlerbehebungen sein."
icc97

3

Alle diese Antworten scheinen ziemlich alt zu sein. Wie in dieser Antwort auf eine ähnliche Frage beschrieben ,

Sowohl Vim 8.0 als auch Neovim verfügen über einen eigenen integrierten Paketmanager

Es ist überhaupt kein weiterer Plugin-Manager erforderlich.

Ich benutze es seit ein oder zwei Jahren und es scheint mir einfach und leicht zu sein.

Hier sind einige Ressourcen zu den Vorteilen und zur Verwendung:


Ein bisschen erstaunlich, dass diese Antwort nicht mehr positive Stimmen erhalten hat. : /
Jesse Adelman vor

Warum Danke.
Sigfried
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.