Pathogen vs Vundle
Vim ist ein unheimlich flexibler und anpassbarer Texteditor. Das deshalb, nicht nur weil es sehr viele Optionen gibt, sondern auch, weil man leicht Plugins für Vim schreiben kann. Momentan gibt es 4545 Plugins auf vim.org.
Problematisch ist jedoch die Plugin-Verwaltung: Alle Plugins liegen in den gleichen Verzeichnissen unter ~/.vim, wodurch es schnell unübersichtlich wird.
Um die Verwaltung zu vereinfachen, wurden diverse Plugins geschrieben. Bislang habe ich Pathogen genutzt, nun aber habe ich Vundle entdeckt und möchte diese beiden Plugins etwas vorstellen und miteinander vergleichen.
Vim Standard
Standardmäßig sieht die Verzeichnisstruktur ungefähr so aus:
~/.vim
├─ autoload
│ └─ plugin_a.vim
├─ doc
│ ├─ plugin_a.txt
│ └─ plugin_b.txt
├─ ftdetect
├─ plugin
│ ├─ plugin_a.vim
│ └─ plugin_b.vim
├─ README
└─ syntax
└─ language.vim
Wie sich sicher denken kann, wird diese Form schnell unübersichtlich. Man kann zwar noch leicht Plugins hinzufügen, aber spätestens beim Entfernen wird es fummelig.
Pathogen
Die Installation von Pathogen ist einfach: Man speichert sich eine Datei in ~/.vim/autoload und fügt anschließend in seine .vimrc folgende Zeile ein:
execute pathogen#infect()
Anschließend speichert man seine Plugins in Unterverzeichnissen von ~/.vim/bundle:
~/.vim
├─ autoload
│ └─ pathogen.vim
└─ bundle
├─ plugin_a
│ ├─ autoload
│ │ └─ plugin_a.vim
│ ├─ doc
│ │ └─ plugin_a.txt
│ ├─ plugin
│ │ └─ plugin_a.vim
│ └─ README
├─ plugin_b
│ ├─ doc
│ │ └─ plugin_b.txt
│ └─ plugin
│ └─ plugin_b.vim
└─ lang
└─ syntax
└─ language.vim
Dies hat mehrere Vorteile:
- Die Dateien der Plugins sind komplett von einander getrennt.
- Die Plugins können direkt aus git gecloned werden. Würden alle Plugins in einem Verzeichnis liegen, würden sich die .git-Verzeichnisse überschreiben.
- Kaum zusätzlicher Konfigurationsaufwand.
Wenn man seine Dotfiles in einem git-Repository versioniert, kann man auch die Plugins als git-submodules hinzufügen.
Vundle
Einen Schritt weiter geht Vundle. Hier werden die Plugins nicht nur automatisch aus dem bundle-Unterverzeichnis geladen, sondern auch direkt heruntergeladen und aktualisiert.
Wieder liegen die Plugins unter ~/.vim/bundle (damit sind auch alle speziell an Pathogen angepassten Plugins kompatibel mit Vundle). Installiert wird Vundle mittels
$ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
Nun muss noch die .vimrc angepasst werden:
set nocompatible
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
Bundle 'gmarik/vundle'
" repos on github
Bundle 'user/vim-plugin'
" vim-scripts repos
Bundle 'PluginName'
" non github repos
Bundle 'git://git.example.com/vim-plugin.git'
" local git repos
Bundle 'file:///home/user/path/to/plugin'
filetype plugin indent on
Nun können die Plugins mit :BundleInstall
installiert, mit :BundleUpdate
aktualisiert oder mit :BundleClean
entfernt werden (nachdem sie aus der .vimrc entfernt wurden).
Es gibt für Vundle einige Konfigurationsmöglichkeiten und eine umfangreiche Dokumentation.
Vergleich
Pathogen bietet eine schnelle und leicht einzurichtende Möglichkeit, um Plugins in Unterverzeichnissen zu kapseln. Um die eigentliche Verwaltung der Plugins muss man sich aber selbst kümmern.
Vundle übernimmt auch diesen Schritt und ermöglicht einen zentralen Weg, um alle Plugins (z.B. auf einem anderen Rechner) automatisch zu installieren und zu aktualisieren. Etwas umständlicher ist das Einbinden von nicht versionierten Plugins. Auch ist es eine Geschmackssache, ob man mit git-submodules arbeiten möchte oder nicht.
Beide Plugin-Manager haben ihre Vor- und Nachteile und man kann mit beiden glücklich werden. Welches man nehmen sollte, hängt letztendlich vom eigenen Geschmack und von den Anforderungen ab.