Vim bringt eine der vollständigsten Editor-Dokumentationen mit, die es überhaupt gibt — und sie ist direkt im Editor verfügbar, ohne Webbrowser, ohne Internet, ohne Tab-Wechsel. Wer das Hilfe-System verstanden hat, beantwortet 90 % aller Vim-Fragen schneller über :help als über jede Suchmaschine. Die Doku folgt einer eigenen Tag-Konvention, die auf den ersten Blick kryptisch wirkt — i_CTRL-W, v_d, :s_flags — aber dahinter steht ein bestechend einfaches System: jeder Befehl, jede Taste und jede Option hat einen eindeutigen Help-Tag, und wer das Schema kennt, springt direkt zur richtigen Stelle. Dieser Artikel erklärt das Schema, die Navigation im Help-Buffer, die zwei wichtigsten Such-Befehle und die spezialisierten Diagnose-Kommandos, die im Alltag den Unterschied machen.
:help — der Einstieg
Der einfachste Aufruf ist auch der nützlichste:
:helpDieser Befehl öffnet die Hauptseite der Vim-Dokumentation in einem horizontalen Split. Du landest in einem Buffer wie jeder andere — Navigation funktioniert mit den üblichen Motions (j/k, gg/G, Ctrl-d/Ctrl-u), Suche mit /. Geschlossen wird der Help-Buffer mit :q wie jeder normale Buffer.
Die Hauptseite ist als Inhaltsverzeichnis aufgebaut und verweist auf die wichtigsten Kapitel:
- User-Manual (usr_01.txt bis usr_45.txt) — didaktisch aufgebaute Einführung in alle Vim-Konzepte.
- Reference-Manual — alphabetische Referenz aller Befehle, Optionen und Funktionen.
- Editing — alles rund um Dateien, Buffer, Windows.
- Programming —
:make, Quickfix, Folding, LSP (Neovim), Tree-sitter (Neovim). - Scripting — Vimscript bzw. Lua-API.
Wer Vim systematisch lernen möchte, liest die User-Manual-Kapitel der Reihe nach — sie sind in genau der Reihenfolge geschrieben, in der Wissen sinnvoll aufeinander aufbaut. Das ist die Vorlage, an der sich übrigens auch der Aufbau dieser Doku orientiert.
Gezielte Hilfe zu einem Thema
Ein nackter :help-Aufruf ist gut für den Einstieg, gezielter wird es mit einem Argument:
:help dw " Hilfe zur Operator-Motion-Kombination "dw"
:help :write " Hilfe zum Ex-Befehl :write
:help 'number' " Hilfe zur Option 'number' (in einfachen Anführungszeichen!)
:help <C-w> " Hilfe zum Prefix Ctrl-w (Window-Befehle)
:help options " Übersicht aller Konfigurations-Optionen
:help features " Liste der Feature-Flags (+clipboard, +python3, ...)Beim Tippen funktioniert Tab-Completion: nach :help :w zeigt Tab alle Tags an, die mit :w beginnen — :w, :wa, :wall, :wq, :write, :wviminfo, und so weiter. Wer den exakten Tag-Namen nicht kennt, tastet sich darüber heran.
Drei Notations-Konventionen sind zentral und verraten dir, welche Art Help-Eintrag du gerade nachschlägst:
- Optionen stehen in einfachen Anführungszeichen —
:help 'number',:help 'ignorecase',:help 'tabstop'. Ohne die Anführungszeichen findet Vim sie nicht. - Ex-Befehle stehen mit Doppelpunkt —
:help :write,:help :substitute. Mit Doppelpunkt sucht Vim im Ex-Befehl-Namespace. - Tastenkombinationen stehen in Angle-Brackets —
:help <C-w>,:help <leader>,:help <CR>.
Tag-Konventionen für die Modi
Ein und derselbe Tastendruck kann in unterschiedlichen Modi unterschiedliche Bedeutungen haben. Ctrl-w ist im Normal-Mode der Window-Prefix („switch windows"), im Insert-Mode ein Wort-Löschen. Damit das Hilfe-System beides eindeutig adressieren kann, gibt es Modus-Präfixe vor dem eigentlichen Tag:
| Präfix | Modus | Beispiel-Tag | Bedeutung |
|---|---|---|---|
| (keiner) | Normal-Mode | :help dw | dw im Normal-Mode (delete word) |
i_ | Insert-Mode | :help i_CTRL-W | Ctrl-W im Insert-Mode (Wort löschen) |
v_ | Visual-Mode | :help v_d | d im Visual-Mode (Selektion löschen) |
c_ | Command-Line-Mode | :help c_CTRL-R | Ctrl-R in der Command-Line (Register einfügen) |
o_ | Operator-pending | :help o_v | v als Force-Charwise nach einem Operator |
t_ | Terminal-Mode | :help t_CTRL-W_N | Terminal-Escape zurück in Normal (Vim 8.1+) |
: | Ex-Befehl | :help :write | Der Ex-Befehl :write |
Diese Präfixe sind nicht optional — sie sind der Schlüssel zum Hilfe-System. Wer :help CTRL-W ohne Modus-Präfix tippt, landet beim Normal-Mode-Window-Prefix. Wer :help i_CTRL-W tippt, landet bei „Wort vor dem Cursor löschen" im Insert-Mode. Beide Einträge existieren parallel und meinen unterschiedliche Dinge.
Eine Memo-Hilfe: das Präfix entspricht immer dem ersten Buchstaben des Modus-Namens. i für Insert, v für Visual, c für Command, o für Operator-pending, t für Terminal. Im Normal-Mode entfällt das Präfix — er ist der Default.
Navigation im Help-Buffer
Der Help-Buffer ist nicht nur Lesetext, sondern ein kleines Hypertext-System. Wörter in |pipes| sind klickbare Tag-Links — du kannst dem Verweis folgen und wieder zurückspringen:
| Befehl | Aktion |
|---|---|
| Ctrl-] | Tag unter Cursor folgen (in den verlinkten Eintrag springen) |
| Ctrl-t | Einen Schritt zurück (im Tag-Stack) |
| Ctrl-o | Letzte Cursor-Position (Jumplist — funktioniert überall) |
| Ctrl-i | In der Jumplist nach vorne (Gegenstück zu Ctrl-o) |
| :tag foo | Direkt zu einem benannten Tag springen |
| :tags | Aktuellen Tag-Stack anzeigen |
| q | Help-Buffer schließen (entspricht :q) |
Damit lässt sich die Doku tatsächlich lesen wie eine Web-Seite: Tag-Verweisen folgen, zurückspringen, weiter lesen. Wer im Normal-Mode auf ein |tag| zeigt und Ctrl-] drückt, springt direkt dorthin — Wechsel zur Maus oder zum Browser entfällt.
Ein praktisches Detail: in den meisten Distributionen ist q im Help-Buffer auf „Buffer schließen" gemappt — was in normalen Buffern q als Macro-Aufzeichnung blockieren würde, ist hier eine echte Erleichterung.
Wenn du den Tag-Namen nicht kennst: :helpgrep
Manchmal weißt du, was du suchst, aber nicht, wie der Tag heißt. Dann hilft die Volltext-Suche durch die gesamte Hilfe:
:helpgrep word boundary
:helpgrep undo tree
:helpgrep clipboard.*system:helpgrep durchsucht alle Help-Dateien nach dem angegebenen Pattern und befüllt die Quickfix-Liste mit den Treffern. Navigieren kannst du dann mit:
| Befehl | Aktion |
|---|---|
| :copen | Quickfix-Liste als Buffer öffnen |
| :cnext | Nächster Treffer (Kurzform: :cn) |
| :cprev | Vorheriger Treffer (Kurzform: :cp) |
| :cfirst | Zum ersten Treffer |
| :cclose | Quickfix-Liste schließen |
Eine Variante mit Fuzzy-Filter ist über Plugins wie fzf.vim möglich — der Befehl :Helptags (von fzf.vim) öffnet einen interaktiven Picker über alle Hilfe-Tags, Tippe live filtert die Liste. Für viele Nutzer ersetzt das :helpgrep komplett.
:options — interaktive Settings-Übersicht
Vims Optionen sind in der Hilfe einzeln dokumentiert, aber wer einen Überblick sucht, ruft besser:
:optionsDamit öffnet sich ein eigener Split mit einer thematisch sortierten Liste aller Optionen, gruppiert nach Kategorien wie „displaying text", „file I/O", „mapping", „terminal". Jede Option zeigt ihren aktuellen Wert, eine kurze Beschreibung und — und das ist der Trick — du kannst den Wert direkt im Buffer ändern: Cursor auf den Wert setzen, cw, neuen Wert eintippen, Esc, fertig. Der Wert wird sofort wirksam.
Das ist nicht persistent — Änderungen über :options werden mit dem nächsten Vim-Start vergessen, wenn sie nicht in der ~/.vimrc oder init.lua stehen. Aber zum Ausprobieren und „was passiert, wenn ich diese Option umlege?" ist es das beste eingebaute Werkzeug, das Vim hat.
Wer den aktuellen Wert einer einzelnen Option wissen will, fragt direkt:
:set number? " Boolean-Status der Option anzeigen
:set tabstop? " Wert der Option anzeigen
:verbose set tabstop? " WO wurde die Option zuletzt gesetzt?Die :verbose set …?-Variante ist Gold wert für Konfigurations-Debugging: sie zeigt nicht nur den aktuellen Wert, sondern auch die Datei und Zeile, in der die Option zuletzt gesetzt wurde. Wenn du dich fragst, „warum ist tabstop=2, ich habe doch tabstop=4 in init.lua geschrieben?", bekommst du hier die Antwort.
Diagnose-Werkzeuge: :version, :scriptnames, :messages, :profile
Vim hat zwar kein einzelnes „Health-Check"-Kommando, dafür mehrere spezialisierte Diagnose-Befehle, die zusammen ein vollständiges Bild ergeben:
:version " Vim-Version, Compile-Flags, Patches
:scriptnames " alle geladenen Scripts in Reihenfolge
:messages " Echo-Area-Verlauf — was wurde gesagt?
:verbose set <option>? " wer hat diese Option gesetzt?
:verbose map <key> " wer hat diese Mapping gesetzt?
:verbose autocmd <event> " welche Autocmds laufen bei diesem Event?Das Schema dahinter:
:versionzeigt, was Vim kann — Compile-Flags wie+clipboard,+python3,+lua. Wenn ein Plugin sich beschwert, dass ein Feature fehlt, ist:versionder erste Schritt.:scriptnameslistet jede.vim-Datei, die seit dem Start geladen wurde — vimrc, plugin-Skripte, ftplugin, after/-Overrides, in genau der Reihenfolge der Ladevorgänge. Sehr nützlich, um Konfigurations-Konflikte aufzudecken: wenn eine Option „falsch" gesetzt ist, sagt dir:verbose set <option>?den Pfad zur Datei und Zeilennummer, in der das passiert ist.:messagesist Vims Echo-Area-Historie. Meldungen, die zu schnell verschwunden sind („Press ENTER or type command to continue") landen hier — inklusive Fehlermeldungen aus Plugins.
Für Performance-Diagnosen gibt es zusätzlich das eingebaute Profiler-Werkzeug:
:profile start /tmp/profile.log " Profiling-Output festlegen
:profile func * " alle Funktionen messen
:profile file * " alle Files messen
" (jetzt die langsame Operation ausführen)
:profile pause " Messung anhalten
:qa " Vim beenden — Log wird geschriebenDie resultierende Log-Datei zeigt pro Funktion und pro Script Zeit-Aufwand und Aufruf-Häufigkeit. Wenn Vim träge wirkt, ist das der definitive Weg, den Schuldigen zu finden.
Praxis-Workflow: drei häufige Hilfe-Aufgaben
Drei wiederkehrende Szenarien, in denen das Hilfe-System glänzt:
„Was macht diese Tastenkombination?"
Du siehst in einer fremden Konfig ein Mapping nnoremap <silent> <leader>w :update<CR> und willst die einzelnen Teile verstehen:
:help :nnoremap " was unterscheidet nnoremap von nmap?
:help <leader> " was ist die Leader-Taste?
:help <silent> " was tut der <silent>-Modifier?
:help :update " was ist :update (im Vergleich zu :write)?„Was bedeutet diese Fehlermeldung?"
Vim wirft E37: No write since last change. Du willst wissen, was das genau heißt und wie man es umgeht:
:help E37 " jede E…-Fehlernummer hat einen Help-TagPraktisch jede numerische Fehlermeldung in Vim ist über :help E<nummer> dokumentiert — inklusive der Ursache und der typischen Lösung. Das ist eine der besten verstecken Eigenschaften des Hilfe-Systems.
„Welche Optionen gibt es für $thema?"
Du willst Folding einschalten und alle relevanten Optionen sehen:
:help folding " Übersicht über alle Fold-Konzepte
:help fold-options " gezielt die Optionen
:options " interaktive Liste — Folding-Kategorie suchenBesonderheiten
Jede Fehlernummer ist dokumentiert
Vims Fehlermeldungen tragen alle eine ID der Form E… (z. B. E37, E121, E486). Über :help E<nummer> findest du die offizielle Erklärung — inklusive Ursache und Lösung. Das ist meist schneller als jede Web-Suche.
`'option'` mit einfachen Anführungszeichen
Wer :help number tippt, landet auf einer ganz anderen Seite als :help 'number' — die erste Variante zeigt Help zur Zeilen-Nummerierungs-Doku, die zweite zur konkreten Option. Die einfachen Anführungszeichen sind Pflicht.
`:help` in einem vertikalen Split
Default ist horizontaler Split. Wer lieber vertikal liest: :vert help foo oder dauerhaft per Autocommand. Ein einmaliges :wincmd L schiebt den Help-Buffer nachträglich auf die rechte Seite — manche Leser bevorzugen das bei breiten Monitoren.
Help auf Deutsch nur teilweise
Vims Help ist primär in Englisch. Es gibt eine Reihe Übersetzungen (französisch, japanisch, russisch, italienisch, …) und auch eine deutsche, aber sie deckt nicht alle Kapitel ab. Wer auf Englisch lesen kann, fährt im Zweifel besser — die offiziellen Tags und Beispiele sind nur dort vollständig.
`:Tutor` ist Help für Anfänger, `:help` für alle anderen
Klare Trennung: Wer Vim lernen möchte, startet mit :Tutor (Neovim) oder vimtutor im Terminal — siehe Erster Start und vimtutor. Wer Vim kennt und einen Befehl nachschlagen will, geht über :help. Beide ergänzen sich.
Help-Buffer respektieren keine Wrap-Settings
Wenn deine Hilfe seltsam abgeschnitten oder umgebrochen wirkt: das liegt fast immer an einer Konfiguration, die set nowrap oder eine spezifische textwidth global erzwingt. Help-Dateien setzen ihre eigene Formatierung — :set wrap als Override im Help-Buffer macht sie wieder lesbar.
Weiterführende Ressourcen
Externe Quellen
- vimhelp.org — das komplette Vim-Hilfesystem als durchsuchbare HTML-Variante.
- Vim User-Manual usr_02 — The First Steps in Vim — bester Einstiegs-Lese-Pfad im offiziellen Manual.
- Neovim
:help-Doku — formale Definition des Help-Befehls. - Neovim
:checkhealth-Doku — Konzepte und Beispiele. - Vim Help Online — Tag-Suche — alphabetische Liste aller Vim-Help-Tags.