December 14, 2012

20 Top Vim Plugins Die Du Kennen Solltest

Vim bietet mit der Standardinstallation schon eine sehr gute Basis, aber man vermisst viele Features aus aktuellen Editoren/IDEs bei einer frischen Vim-Installation. Zum Glück es gibt für Vim tausende Plugins, die jedes erdenkliche Feature in Vim ermöglichen.

Meine aktuelle vim config auf github

Vim Plugins installieren

Aus einem .zip

Einfach die jeweilige .zip runterladen, im Terminal per unzip beispielplugin.zip entpacken, in das gerade entpackte Verzeichnis wechseln und den kompletten Inhalt inklusive Unterverzeichnisse per cp * -R ~/.vim/ ins plugin-Verzeichnis von Vim kopieren. Beim nächsten Start von Vim sind die Plugins sofort verfügbar.

Falls das Plugin als .vba (Vimball) vorliegt, einfach die vba-Datei in Vim öffnen und :so % eingeben. Damit wird das Plugin automatisch entpackt und ist nach dem Neustart von Vim verfügbar, falls auf der Pluginseite keine zusätzlichen Schritte angegeben wurden.

Mit pathogen.vim

pathogen.vim ist ein Utility-Plugin, das die Organistation von Vim Plugins vereinfacht. Das Plugin sorgt dafür, dass jedes Unterverzeichnis ~/.vim/bundle zum Runtimepath hinzugefügt wird. Das heißt, dass man einfach jedes Vim Plugin in ein eigenes Verzeichnis unterhalb von .vim/bundle/ ablegen kann. Damit gibt es keine Überschneidungen von Dateien verschiedener Plugins, die sonst in gleichen Ordnern lägen, und alles ist sauber getrennt.

Die Installation ist einfach:

mkdir -p ~/.vim/autoload ~/.vim/bundle
curl 'www.vim.org/scripts/download_script.php?src_id=16224' \
~/.vim/autoload/pathogen.vim

Danach noch ein call pathogen#infect() in die .vimrc und man ist fertig!

Plugin Dokumentationen in die Vim Hilfe einbinden

Achtung: viele Vim Plugins haben in ihrem Verzeichnis ein Unterverzeichnis doc, in dem Hilfedateien zur Benutzung und Konfiguration des Plugins liegen. Du musst das Verzeichnis einmalig in Vim zu den Vim-Hilfen hinzufügen:

:helptags $VIMRUNTIME/doc

Danach kannst du in Vim die Hilfedateien aufrufen:

:h pluginname.txt

Die besten Plugins für den Vim-Editor:

rails.vim

rails.vim Screencast

rails.vim macht dein Vim zur Rails-IDE. Viele Rails-spezifische Features wie z.B. geht man per :R zur Datei, die mit dem Code unter dem Cursor verbunden ist. :Rmodel ohne Parameter bringt dich zum Model der aktuellen Datei, :Rmodel user öffnet das Usermodel. Für alle Features einfach den Screencast anschauen und/oder in die umfangreiche Dokumentation gucken.

File-Launcher für Vim

FuzzyFinder

Der FuzzyFinder besticht/erschlägt durch seine Vielzahl an Modes, unter anderem könnt ihr folgendes damit suchen/öffnen:

  • Files
  • Buffer
  • Tags
  • Most recent used
  • Directories

Diese Modi gibt es auch noch einmal mit Spezifikationen wie z.B. FindFileInCurrentBuffer, TagsInOpenBuffers, etc., etc… Natürlich gibt es auch eine rekursive Dateisuche, die allerdings etwas gewöhnungsbefürftig ist: man gibt als erstes den (Teil-)Namen der gewünschten Datei an und “refined” danach mit einem oder mehreren Argumenten.

Beispiel: ich suche die Datei settings.py im Verzeichnis django/todo/. Nun rufe ich die rekursive Suche auf, tippe sett;to . Dadurch listet das Plugin alle Dateien auf, die “sett” im Dateinamen haben und in einem Ordner liegen, in dessen Namen “to” vorkommt. Man kann beliebig oft “refinen”, aber meist reicht schon das erste “Refining” um die gewünschte Datei zu finden. Der Separator fürs Refining ist per default das “;”, man kann es aber auch einfach in “; ” (also Leertaste) oder mehr Unixlike in “/” ändern. Aus obiger Suche wird dann sett/to … Finde ich als LinuxUser schlüssiger.

Anmerkung: Um die aktuellste Version des FuzzyFinder-Plugins zu bekommen, klickt einfach auf die Überschrift.

Command-T

command t screenshot

Command-T ist wie der FuzzyFinder, nur ein bißchen besser.

Ein bißchen besser deshalb, weil du alles (sowohl Pfad als auch Dateinamen) nacheinander schreiben kannst.

Also: du drückst die ToggleTaste von Command-T und ein Fenster fährt hoch. Jetzt kannst du drauf lostippen und vom aktuellen Verzeichnis aus rekursiv Dateien aufrufen. Dabei sucht Command-T automatisch die besten Ergebnisse. Zeigen ist besser als beschreiben, deshalb hier der Screencast.

Fazit

Wer einen wirklich schnellen File-Launcher mit rekursiver Suche und separatorfreiem Patterning haben will, sollte Command-T nehmen. Wer viel Funktion sucht und alles in einem will, dem sei der FuzzyFinder ans Herz gelegt. Ich finde die Refining Methode vom FuzzyFinder etwas umständlich, ansonsten wäre er mein Favorit. Einfach beide ausprobieren und sehen, womit du besser zurecht kommst.

snipMate.vim

Screencast Vim mit snippets, lovely! Was sind snippets: snippets sind Code-Schnipsel, die beim Programmieren unglaublich viel an Arbeit abnehmen. Einfach den Screencast angucken 🙂

Weil die Standard-snippets von snipMate beim Start von Vim Duplikatsprobleme verursacht haben, hab ich alle Dateien im Ordner ~/.vim/snippets gelöscht und das snippet-Paket von scooloose genommen, funktioniert reibungslos! Alternativ könnt ihr auch eigene snippets bauen, dazu z.B. für PHP einfach unter ~/.vim/snippets/php/euertrigger.snippet einen eigenen snippet anlegen. euertrigger ist hierbei mit dem gewünschten trigger zu ersetzen, sprich wenn das Snippet per for aktiviert wird, heisst die Datei for.snippet. In die Datei selber kommt dann einfach der PHP-code, der durch das -Drücken erscheinen soll. Und die TAB-Stops baut ihr mit ${1},${2} usw.

Folgende Sprachen unterstützt euer Vim danach von Haus aus:

  • C
  • CSS
  • HTML
  • Java
  • JavaScript
  • PHP
  • Python
  • Ruby
  • Ruby on Rails
  • Zend

surround.vim

Wörter bzw. ganze Zeilen oder Abschnitte mit Tags/Klammern umschliessen oder Tags/Klammern entfernen/ändern? Mit surround.vim kein Problem. Mächtiges Vim Plugin, definitiv anschauen! Zum Screencast

repeat.vim

repeat.vim ermöglicht es, per Wiederholungstaste (also “.”) auch auf die letzte Pluginaktion zuzugreifen. Hast du z.B. durch das surround.vim-Plugin ein Wort per csw” mit Anführungszeichen eingeschlossen, kannst du die Aktion per “.” beliebig oft wiederholen.

align.vim

Align.vim ist ein Alignment-Plugin, mit dem du im Visual-mode markierte Blöcke per :Align gewünschterSeperator ordnen kannst.

NERD_Tree.vim

nerdtree

Ein Filesystem-Tree in Vim. Das Plugin wird per :NERDTree aufgerufen und kann (falls gewünscht) über die Tastatur gesteuert werden. Für eine komplette Übersicht auf der Seite oder in der doc oder den Screencast gucken.

delimitMate.vim

Angenehmes Programmieren bedeutet für mich – neben einem Editor mit getrennten modes 🙂 – die Automation von unnötigen Schritten. delimitMate.vim ist ein Vim Plugin für Automation: es ergänzt automatisch schliessende Klammern, Anführungzeichen usw. hinter der aktuellen Cursorposition. Sprich, ihr tippt eine öffnende { und es erscheint sofort eine passende } hinter eurem Cursor und ihr könnt zwischen den Klammern tippen. Must have.

matchit.vim bzw. matchit-ruby.vim

Damit werden die Klammern, zwischen denen man mit % hin und herspringen kann, um HTML- und XML- bzw. ruby-Tags wie divs, li, if, end usw. erweitert. Ausserdem kann man eigene Tags festlegen.

unimpaired.vim

unimpaired.vim bietet 16 nützliche Mappings. Diese benutze ich auch in meiner .vimrc für die Zeilentausch-Binds.

buftabs.vim

Nach dem BufExplorer und dem minibufexplorer bin ich jetzt beim buftabs.vim angelangt. buftabs.vim zeigt dir die offenen Buffer in vim/gVim an. Zwei Dinge sind an buftabs cool:

  1. verbraucht das Vim Plugin keinen zusätzlichen Platz wie z.B. der minibufexplorer, weil die Buffer unter der Statuszeile angezeigt werden (vgl. Screenshot).
  2. zeigt es die Buffer nur an, wenn a) Vim gestartet wird, b) ein neuer Buffer geöffnet wird oder c) zwischen Buffern gewechselt wird.

fugitive.vim

Git Support in Vim, echt gut gemacht… Go for it 🙂

fugitive Screencast

gundo.vim

gundo

gundo.vim visualisiert die undo-history unter vim. Einfach ausprobieren bzw. den Screencast gucken!

SearchComplete.vim

SeachComplete.vim ermöglicht die Tab-Autocompletion beim Suchen nach / oder ?…

ZenCoding.vim

Mächtiges Plugin für HTML und CSS. Die Features aufzuzählen würde ewig dauern, deshalb definitiv das Tutorial und/oder den Screencast für das Plugin (etwas weiter unten auf der Seite) anschauen!

taglist.vim

taglist.vim erweitert dein Vim um einen Sourcecodebrower. Mit taglist kannst du zu Klassen und Methoden navigieren.

NERDCommenter.vim

nerdcommenter

Automatisches auskommentiern von Code je nach Filetype. Extrem praktische Befehle, wie z.B. “Kopiere alles, bevor du es auskommentierst”. Dabei kann man natürlich entweder im Commandmode mit einer Zahl vor den Kürzeln oder im Visualmode mehrere Zeilen kommentieren.

css.vim

css.vim hinterlegt in CSS-Dateien Farbcodes mit der jeweiligen Farbe. Ziemlich hilfreiches Vim Plugin bei der Webentwicklung.

Beachten sollte man allerdings, dass die css.vim nicht in ~/.vim/plugin/ sondern in ~/.vim/after/syntax kommt.

Fazit

So, das waren die Vim-Plugins, mit denen ich im Moment arbeite. Mir erleichtern sie einiges beim täglichen Coden. Wie sieht es bei euch aus? Habt ihr Lieblingsplugins, die noch zur Liste gehören? Dann würde ich mich über einen Kommentar freuen.

PS: guck dir meinen neuesten Artikel an: Neovim & PHP

Dein Lieblings-Vim-Plugin fehlt in dieser Liste? Hilf mir, diese Liste zu verbessern, und hinterlasse unten bitte ein Kommentar mit einem Link zum Plugin!

Wenn Dir dieser Artikel gefallen hat, dann abonniere doch einfach den Newsletter und bekomme alle Artikel bequem per Email oder RSS-Feed geliefert!