Vims Doku und jede ernsthafte Vim-Anleitung benutzen eine eigene Tastatur-Notation — <C-x> statt „Ctrl+x", <CR> statt „Enter", <leader> statt einer konkreten Taste. Die Schreibweise wirkt am Anfang technisch, ist aber konsequent durchdacht und hat einen praktischen Sinn: Sie beschreibt Tasten eindeutig, unabhängig von Layout und Betriebssystem, und sie funktioniert wörtlich als Eingabe in einem Vim-Mapping. Wer nnoremap <leader>w :w<CR> in seine Konfig schreibt, hat damit gleichzeitig dokumentiert, was die Tastenfolge bedeutet. Dieser Artikel ist die definitive Referenz aller Notations-Elemente — alle Modifier, alle Sondertasten, die Mapping-Modi-Präfixe und die typischen Stolperfallen auf der deutschen Tastatur, vor allem mit AltGr-Belegung der eckigen und geschweiften Klammern.

Das Grundprinzip

Jede Taste in Vim hat eine eindeutige Schreibweise. Einzelne, druckbare Zeichen werden direkt geschrieben, ohne Klammern: a, b, 7, $, ?. Sondertasten und Tastenkombinationen mit Modifiern werden in Angle-Brackets geschrieben: <Esc>, <C-w>, <F5>, <leader>.

Die Schreibweise ist case-insensitive für die Modifier-Buchstaben, case-sensitive für das Sondertasten-Wort: <C-w> ist identisch zu <c-w>, aber <Esc> und <esc> und <ESC> sind alle gleichwertig. Praktische Konvention: Modifier groß (C, M, S), Sondertasten in CamelCase (<CR>, <Esc>, <Tab>), reine Zeichen klein/groß wie sie auf der Tastatur stehen.

Die Notation funktioniert wörtlich als Eingabe in einem Mapping:

vim ~/.vimrc
" Diese Zeile sagt zwei Dinge gleichzeitig:
" 1. Erstelle ein Normal-Mode-Mapping (nnoremap)
" 2. Bei Druck von <leader>w (Leader-Taste, dann w)
"    führe :w<CR> aus — also den Ex-Befehl :w gefolgt von Enter.
nnoremap <leader>w :w<CR>

Diese Selbst-Beschreibbarkeit ist der Grund, warum die Schreibweise sich auch in jeder Vim-Doku, in Plugin-READMEs und in :help-Tags durchgesetzt hat.

Modifier: C-, M-, S-, A-, D-

Vim kennt fünf Modifier-Präfixe, die innerhalb von <...> einer Taste vorangestellt werden:

SchreibweiseModifierBedeutung
<C-x>CtrlCtrl + x
<M-x> oder <A-x>Meta / AltAlt + x (auf macOS: Option, siehe macOS-Hinweise)
<S-x>ShiftShift + x — meist redundant für Buchstaben
<D-x>Command (macOS)Cmd + x — nur in MacVim / Neovim-GUI verfügbar

Mehrere Modifier können kombiniert werden — die Reihenfolge ist Konvention, aber technisch egal:

vim Mehrfach-Modifier
<C-S-Tab>            " Ctrl + Shift + Tab
<C-M-Right>          " Ctrl + Alt + Pfeil rechts
<D-S-f>              " Cmd + Shift + f — nur in MacVim/GUI

Wichtig zu wissen: Die meisten Terminal-Emulatoren reichen <C-S-- und <M--Kombinationen nicht zuverlässig durch. Wer ein <C-S-Tab> mappt, sieht es in Vim oft als <C-Tab> oder <Tab> ankommen — der Shift-Bit geht im Terminal-Protokoll verloren. Im GUI-Vim (gVim, MacVim) ist diese Einschränkung weg.

Shift bei Buchstaben ist redundant

Eine kleine Eleganz: Bei Buchstaben braucht es kein <S->, weil Vim Groß- und Kleinbuchstaben sowieso unterscheidet. <S-a> und A sind dasselbe — die Schreibweise <S-A> ergibt keinen Sinn. Anders bei Funktions- und Sondertasten: <S-Tab> ist sinnvoll, weil Tab und Shift-Tab unterschiedliche Aktionen sind.

Sondertasten

Die nicht-druckbaren Tasten haben eigene Namen in Angle-Brackets. Die vollständige Liste:

SchreibweiseTaste
<CR>Enter / Return (Carriage Return)
<Enter>Synonym für <CR>
<Esc>Escape
<Tab>Tab
<S-Tab>Shift+Tab
<BS>Backspace
<Del>Delete (Entfernen — vorwärts löschen)
<Space>Leertaste
<Up> <Down> <Left> <Right>Pfeiltasten
<Home> <End>Pos1 / Ende
<PageUp> <PageDown>Bild ↑ / Bild ↓
<Insert>Einfügen-Taste
<F1> bis <F12>Funktionstasten
<nul>Null-Byte
<Bar>das Pipe-Zeichen &#124; — als Literal in Mappings
<Bslash>Backslash \
<lt>das <-Zeichen — als Literal in Mappings
<Nop>„nichts tun" — nützlich, um eine Taste zu deaktivieren

Ein paar dieser Sondernamen sind erst auf den zweiten Blick wichtig:

<Bar> brauchst du, wenn ein Mapping mehrere Ex-Befehle mit | verkettet — das nackte | würde Vim als Mapping-Ende interpretieren. Korrekt:

vim Mehrere Ex-Befehle in einem Mapping
" Falsch: das | beendet das Mapping zu früh
" nnoremap <leader>x :w | bnext<CR>      " bnext wird NICHT Teil des Mappings

" Richtig: <Bar> als Literal-| im Mapping
nnoremap <leader>x :w <Bar> bnext<CR>

<Nop> ist die Standard-Variante, um eine Taste explizit zu deaktivieren — z. B. die Pfeiltasten für die Eingewöhnung an h j k l:

vim Pfeiltasten deaktivieren
" Die Pfeiltasten in den Modi unbrauchbar machen,
" damit man sich an hjkl gewöhnt.
nnoremap <Up>    <Nop>
nnoremap <Down>  <Nop>
nnoremap <Left>  <Nop>
nnoremap <Right> <Nop>

Leader-Tasten

Der Leader ist eine spezielle Taste, die als persönlicher Befehls-Präfix fungiert. Default ist der Backslash \, aber praktisch jede Vim-Konfig setzt ihn um, weil \ auf vielen Layouts schlecht erreichbar ist. Die 2026 verbreitetste Wahl: das Leerzeichen.

vim Leader-Konfiguration
" Leader auf Space setzen — MUSS vor dem ersten Mapping passieren,
" sonst nutzen die Mappings den alten Default.
let mapleader = " "

" Optionaler Localleader für filetype-spezifische Mappings.
let maplocalleader = ","

" Mappings mit <leader> nutzen jetzt die gesetzte Taste.
nnoremap <leader>w :w<CR>           " Space-w speichert
nnoremap <leader>q :q<CR>           " Space-q beendet
nnoremap <leader>e :Explore<CR>     " Space-e öffnet netrw

Die Reihenfolge ist wichtig: let mapleader = ... muss vor den nnoremap-Zeilen stehen, in denen <leader> auftaucht. Vim löst die Leader-Taste zur Definitionszeit auf, nicht zur Laufzeit. Wer Leader später umstellt, ändert keine bestehenden Mappings.

Die zweite Variante, <localleader>, ist als Präfix für filetype-spezifische Mappings gedacht. Konvention ist ein anderes Zeichen als <leader> — typisch , oder \. Sie kommt in ftplugin/<lang>.vim-Dateien zum Einsatz:

vim ftplugin/markdown.vim
" Markdown-spezifische Mappings über localleader.
" ,b = Bold (Selektion mit ** umschließen)
nnoremap <buffer> <localleader>b ciw**<C-r>"**<Esc>

Mapping-Modi: n, i, v, x, s, o, c, t

Mappings sind in Vim Modus-spezifisch. :nmap definiert ein Mapping nur für den Normal-Mode; in Insert oder Visual wirkt es nicht. Das gleiche Mapping in mehreren Modi gibt es als :map (Sammelvariante für Normal, Visual, Operator-pending — die drei „Visual-ähnlichen") oder muss in jedem Modus einzeln definiert werden.

BefehlWirkung
:nmap / :nnoremapNormal-Mode
:imap / :inoremapInsert-Mode
:vmap / :vnoremapVisual + Select Mode
:xmap / :xnoremapVisual-Mode (ohne Select)
:smap / :snoremapSelect-Mode (ohne Visual)
:omap / :onoremapOperator-pending Mode
:cmap / :cnoremapCommand-Line-Mode
:tmap / :tnoremapTerminal-Mode (Vim 8+)
:map / :noremapNormal + Visual + Operator-pending (Sammel-Variante)

nnoremap statt nmap — immer

Vims Mappings gibt es in zwei Varianten: rekursiv (nmap) und nicht-rekursiv (nnoremap, das nore steht für „non-recursive"). Der Unterschied:

  • nmap durchläuft Mappings rekursiv. Wenn a auf b gemappt ist und b auf c, dann führt a zu c.
  • nnoremap stoppt nach einem Schritt. a führt zu b, auch wenn b selbst gemappt ist.

Die Praxis-Empfehlung ist eindeutig: immer nnoremap (bzw. die entsprechende Modus-Variante) verwenden, es sei denn, Rekursion ist explizit gewünscht (was selten ist und meist mit <Plug>-Mappings zu tun hat).

Ohne nnoremap baut man sich versehentlich Endlos-Schleifen oder unerwartete Verhaltens-Ketten — vor allem in Setups mit vielen Plugins, die ihrerseits Mappings definieren.

vim Der Klassiker — und sein Fix
" GEFÄHRLICH: dieses Mapping versucht, j als gj zu mappen,
" aber wenn ein Plugin gj umgemappt hat, läuft hier eine
" unerwartete Kette an.
nmap j gj

" SICHER: stoppt nach einem Schritt, gj wird tatsächlich
" als reines „nächste visuelle Zeile" verwendet.
nnoremap j gj

Mapping-Flags: <silent>, <buffer>, <expr>

Vor dem lhs (left-hand side) eines Mappings können Flags stehen, die das Verhalten modifizieren:

FlagBedeutung
<silent>unterdrückt die Echo-Ausgabe des Ex-Befehls in der Command-Line
<buffer>Mapping gilt nur im aktuellen Buffer
<expr>rhs wird als Vimscript-Expression evaluiert, nicht als Tastenfolge
<nowait>Mapping wartet nicht auf längere mehrteilige Mappings
<unique>Fehler, wenn Mapping schon existiert (sauberes Plugin-Verhalten)

<silent> ist im Alltag die nützlichste — viele Mappings führen :-Befehle aus, deren Echo am Bildschirm visuelles Rauschen produzieren:

vim <silent> in Aktion
" Ohne <silent>: nach jedem Druck blinkt ":noh" kurz auf
nnoremap <leader>h :noh<CR>

" Mit <silent>: lautloser Befehl
nnoremap <silent> <leader>h :noh<CR>

<buffer> ist die übliche Variante für filetype-spezifische Mappings in ftplugin/:

vim ftplugin/go.vim
" Gilt NUR in Go-Buffern, nicht global
nnoremap <buffer> <localleader>r :!go run %<CR>

DE-Tastatur — die wichtigsten Stolperfallen

Die deutsche Tastatur hat eine besondere Beziehung zu den Zeichen, die Vim regelmäßig braucht. Die wichtigsten Probleme:

Eckige und geschweifte Klammern brauchen AltGr

[, ], {, } liegen auf einer deutschen Tastatur auf AltGr-Belegungen — Vim nutzt diese Zeichen aber sehr häufig als Motions und für Bracket-Sprünge:

Vim-BefehlBedeutungDE-Tastatur
[Bracket-Prefix (z. B. [c, [m, [[)AltGr + 8
]Bracket-Prefix (Gegenstück)AltGr + 9
{ / }Absatz-Motion vorwärts/rückwärtsAltGr + 7, AltGr + 0
\\Backslash — Default-LeaderAltGr + ß
~Case-Toggle und Home-Verzeichnis-SymbolAltGr + +
[]Brackets-Pair für :! und ähnlichesAltGr-Doppel

In der Praxis bedeutet das: viele klassische Vim-Bewegungen wie [[ (Funktionsanfang) oder } (nächster Absatz) verlangen Drei-Tasten-Kombinationen. Wer Vim ernsthaft nutzt, hat ein paar Optionen:

  • us-Layout-Switcher für Code-Sessions (z. B. via OS-Tastatur-Umschaltung auf US-International).
  • Eigene Bindings auf besser erreichbare Tasten — z. B. nnoremap <leader>j } und nnoremap <leader>k { für Absatz-Sprünge.
  • Karabiner-Elements (macOS), AutoHotkey (Windows) oder xkbcomp (Linux) für eine permanente Layout-Anpassung.

Backslash als Default-Leader ist auf DE schmerzhaft

\ ist AltGr + ß — eine Dreifinger-Kombination. Empfehlung: Leader auf das Leerzeichen umstellen (siehe oben). Das ist 2026 ohnehin Mainstream-Konvention.

<C-]> für Tag-Sprünge in :help

Die Hilfe verwendet <C-]>, um Tag-Links zu folgen — auf einer DE-Tastatur ist ] aber AltGr+9, was sich schlecht mit dem Ctrl-Modifier kombiniert. Alternative Bindings:

vim ~/.vimrc
" Alternative Tag-Sprung-Bindings für DE-Tastaturen.
" <C-+> ist auf DE besser erreichbar als <C-]>
nnoremap <C-+> <C-]>
" (Achtung: <C-+> wird von vielen Terminals nicht durchgereicht —
" für GUI-Vim, MacVim oder gVim aber zuverlässig.)

~ für Case-Toggle

~ ist AltGr + + — ebenfalls dreifingerig. Wer Case-Toggle oft braucht, mappt sich eine eigene Variante:

vim ~/.vimrc
" Visual-Toggle: in Visual ~ als Operator nutzbar
" (Vims g~ ist ohnehin die saubere Operator-Variante,
" die mit Motions kombiniert: g~w toggelt ein Wort.)

Interessantes

`` und `X` sind identisch — bei Buchstaben

Für Buchstaben ist <S-x> (Shift+x) und der Großbuchstabe X exakt dasselbe. Für Sondertasten wie <S-Tab> oder Funktionstasten ist die Schreibweise sinnvoll, weil Tab und Shift-Tab unterschiedliche Aktionen auslösen können.

Terminal-Emulatoren reichen nicht jede Tastenkombination durch

<C-S-Tab>, <C-;>, <C-Space> und andere „komplexe" Kombinationen funktionieren oft in gVim/MacVim, scheitern aber im Terminal. Wer ein Mapping anlegt und Vim reagiert nicht: erst mit :nmap <C-foo> prüfen, ob Vim die Kombination überhaupt sieht — alternativ im Insert-Mode <C-v> plus die Taste drücken, dann zeigt Vim, was tatsächlich ankommt.

``-Mappings sind die Brücke zwischen Plugins und Konfig

Viele Plugins definieren ihre Aktionen als <Plug>(plugin-action) und überlassen es dem User, eine konkrete Taste darauf zu binden: nmap <leader>x <Plug>(plugin-action). Hier ist nmap (rekursiv) richtig — nnoremap würde die Auflösung verhindern. Das ist die einzige verbreitete Ausnahme von der „immer nnoremap"-Regel.

`:verbose nmap ` zeigt, wer ein Mapping gesetzt hat

Wenn eine Tastenkombination unerwartet etwas anderes tut als erwartet, ist das die Antwort. :verbose nmap <leader>x zeigt sowohl die Definition als auch die Datei und Zeilennummer, in der das Mapping zuletzt gesetzt wurde — meist ein Plugin oder eine vergessene Zeile in der eigenen Konfig.

`` auf macOS = Option, nicht Cmd

Auf macOS ist <M-x> die Option-Taste (links oder rechts), nicht Command. <D-x> ist Command und funktioniert nur in MacVim/gVim, nicht im Terminal-Vim. Wer Option-Taste als Meta im Terminal nutzen will: Konfiguration des Terminal-Emulators ist nötig — siehe Installation auf macOS.

`` ist nicht statisch — er ist die Definitions-Zeit-Auflösung

Wer let mapleader = " " setzt und danach Mappings definiert, hat Space-Mappings. Wer Leader später umstellt, lässt die bestehenden Mappings auf der alten Taste — Vim löst <leader> zur Definitions-Zeit auf, nicht zur Laufzeit. Bei zusammengewachsenen Configs aus mehreren Quellen ist das eine häufige Ursache für „warum tut Leader plötzlich nichts mehr".

Weiterführende Ressourcen

Externe Quellen

Verwandte Artikel

/ Weiter

Zurück zu Bedienkonzept

Zur Übersicht