Der Normal-Mode ist Vims Heimat. Hier verbringt ein routinierter Vim-Nutzer den Großteil seiner Zeit — geschätzt 90 % einer typischen Edit-Session. Jede Bewegung, jede Veränderung, jeder Sprung beginnt und endet im Normal-Mode; Insert ist nur die kurze Phase dazwischen, in der tatsächlich Text getippt wird. Wer das umkehrt — also versucht, im Insert-Mode zu „leben" und nur zum Speichern kurz hinauszugehen — kämpft permanent gegen Vim und nutzt von seinen Stärken praktisch nichts. Dieser Artikel klärt, was den Normal-Mode ausmacht, welche Befehlsarten er kennt, wie man zuverlässig in ihn zurückkehrt und welche kleinen Konfigurations-Tricks den Wechsel im Alltag flüssig machen.
Der Default — und warum
Wenn du Vim startest, bist du im Normal-Mode. Das ist eine bewusste Entscheidung: Vim nimmt an, dass die meiste Arbeit nicht aus dem Tippen neuer Buchstaben besteht, sondern aus dem Verändern bestehender Texte. Navigieren, löschen, kopieren, umordnen, formatieren — das alles passiert im Normal-Mode.
Tippen ist die Ausnahme, nicht die Regel. Wer eine Stunde an einem Code-File arbeitet, schreibt selten eine Stunde lang neuen Text. Er bewegt sich, löscht hier ein Argument, kopiert dort eine Zeile, sucht eine Funktion, ändert einen String. Das alles geht im Normal-Mode schneller als in jedem anderen Modus — und schneller als in jedem nicht-modalen Editor, sobald die Grundbefehle sitzen.
Die Statusline zeigt im Normal-Mode nichts an. Stille ist der Default. Wer dort -- INSERT -- oder -- VISUAL -- liest, ist gerade nicht im Normal-Mode — und sollte mit Esc dorthin zurückkehren, bevor er den nächsten Befehl tippt.
Was du im Normal-Mode tippen kannst
Im Normal-Mode sind Tastendrücke entweder vollständige Befehle, Bestandteile mehrteiliger Befehle oder Modus-Wechsel. Sie fallen in fünf Kategorien:
| Kategorie | Beispiele | Was sie tun |
|---|---|---|
| Motions | h j k l, w b e, gg G, f x, /foo | Bewegen den Cursor |
| Operators | d, c, y, gu, >, = | Erwarten eine Motion und wirken auf den Bereich |
| Text-Objects | iw, ip, i", ab | Benennen einen semantischen Bereich (mit Operator nutzbar) |
| Counts | 3, 12, 100 | Multiplizieren die nächste Aktion |
| Modus-Wechsel | i, a, o, v, V, <C-v>, :, / | Verlassen den Normal-Mode |
Die Komposition aus diesen Kategorien ist Vims Sprache. Ein Befehl wie 3dw zerlegt sich in:
- Count
3— multipliziere die folgende Aktion - Operator
d— delete - Motion
w— bis zum nächsten Wort
Gelesen: „lösche drei Wörter". Diese Lesbarkeit ist kein Zufall — Vim wurde so entworfen, dass die Tasten-Sequenz dem Satz folgt. Wer die Grammatik einmal verstanden hat, kann den Inhalt jedes Vim-Befehls am Schriftbild ablesen.
Eine zweite Lesbarkeits-Regel: doppelter Operator = ganze Zeile. dd löscht die aktuelle Zeile, yy kopiert sie, cc ändert sie. Das ist die einzige Stelle, an der ein Operator keine Motion braucht — und sie ist in einem so häufigen Anwendungsfall verankert, dass die Sonderregel sich lohnt.
Was du im Normal-Mode NICHT machst
So wichtig die positive Liste ist — die negative Liste ist für Anfänger meist hilfreicher:
- Du tippst keinen normalen Text. Wenn du
halloins Dokument schreiben willst, brauchst du erst Insert-Mode (siehe nächster Artikel). - Du löschst nicht mit
<Backspace>wie in einem normalen Editor. Backspace im Normal-Mode bewegt den Cursor nach links, ohne zu löschen. Zum Löschen gibt es Operatoren wied,c, oder Einzel-Befehle wiex. - Du markierst nicht mit der Maus, um anschließend zu tippen. Das funktioniert zwar, aber es ist nicht der Vim-Weg — und solange du mausst, lernst du keine Motions.
- Du nutzt nicht die Pfeiltasten. Sie funktionieren, sind aber konzeptionell der falsche Weg. Wer Vim ernsthaft lernen will, verbannt sie aus der eigenen Hand-Routine —
h j k list der Default, weil die Finger dort auf der Heimreihe liegen.
Wer diese vier „Don'ts" beherzigt, ist nach zwei Wochen schneller als jeder Anfänger, der versucht, sich mit Maus und Pfeiltasten durchzumogeln. Das ist der gleiche Effekt wie beim 10-Finger-Schreiben: kurzfristig langsamer, langfristig deutlich schneller.
Die wichtigsten 20 Normal-Mode-Befehle
Für die erste Zeit reichen rund zwanzig Befehle, um den Normal-Mode produktiv zu nutzen. Sie zerfallen in vier Gruppen:
Bewegen
| Taste | Bedeutung |
|---|---|
| h j k l | links / runter / hoch / rechts (Heimreihe!) |
| w / b | ein Wort vorwärts / rückwärts |
| 0 / $ | Zeilenanfang / Zeilenende |
| gg / G | Buffer-Anfang / Buffer-Ende |
| /foo | suche „foo" vorwärts |
Verändern
| Taste | Bedeutung |
|---|---|
| x | aktuelles Zeichen löschen |
| dd | aktuelle Zeile löschen (in den Default-Register) |
| yy | aktuelle Zeile kopieren |
| p / P | nach / vor Cursor einfügen |
| u | undo |
| Ctrl-r | redo (Gegenstück zu undo) |
| . | letzten Edit-Befehl wiederholen |
Modus wechseln
| Taste | Bedeutung |
|---|---|
| i / a | Insert vor / nach dem Cursor |
| o / O | neue Zeile darunter / darüber öffnen, Insert |
| v / V | Visual (charwise / linewise) |
| : | Command-Line-Mode |
Datei-Operationen
| Befehl | Bedeutung |
|---|---|
| :w | speichern |
| :q | beenden (falls keine ungespeicherten) |
| :wq | speichern und beenden |
| ZZ | gleichbedeutend mit :wq |
Mit diesen rund zwanzig Befehlen lassen sich bereits 80 % der Edit-Aufgaben im Alltag erledigen. Alles weitere — Text-Objects, Macros, Registers, fortgeschrittene Motions — kommt darauf aufbauend in den späteren Kapiteln.
Zurück in den Normal-Mode kommen
Wer in einem anderen Modus ist und in den Normal-Mode zurück will, hat drei zuverlässige Optionen:
| Taste | Funktioniert aus | Bemerkung |
|---|---|---|
| Esc | jedem Modus | Der klassische Weg, auf jeder Tastatur verfügbar |
| Ctrl-[ | jedem Modus | Funktional identisch zu Esc, oft bequemer |
| Ctrl-c | jedem Modus | Wie Esc, ohne InsertLeave-Autocommand auszulösen |
Die Wahl ist Geschmacksache, hat aber zwei subtile Konsequenzen:
- Esc liegt auf vielen modernen Tastaturen (insbesondere MacBooks mit Touch Bar vor 2020) weit oben links — schlecht erreichbar während des Tippens. Wer das oft macht, verliert Geschwindigkeit.
- Ctrl-[ ist eine alte Konvention, die auf jeder Tastatur funktioniert und die Heimreihe nicht verlässt. Vim-Profis nutzen oft genau diese Variante.
- Ctrl-c sieht aus wie eine bequeme Abkürzung, hat aber einen Unterschied: einige Plugins reagieren auf das
InsertLeave-Event (z. B. für Save-on-leave). Ctrl-c löst dieses Event nicht aus. Im Alltag oft irrelevant, in Plugin-Setups manchmal störend.
Esc-Alternativen via Mapping — die jk/jj-Tradition
Eine verbreitete Konfigurations-Tradition ist es, eine Tastenfolge auf der Heimreihe auf Esc zu mappen. Die beiden bekanntesten Varianten:
" Variante 1: jk — beide Tasten direkt nebeneinander auf der Heimreihe,
" kommt im normalen Text praktisch nie als Buchstabenfolge vor.
" Im Insert-Mode tippt man schnell "jk" hintereinander und ist
" sofort im Normal-Mode.
inoremap jk <Esc>
" Variante 2: jj — doppelter j-Anschlag, noch bequemer,
" aber kollidiert mit englischen Texten, in denen "jj" niemals
" vorkommt — bei deutschen Texten gilt das genauso.
inoremap jj <Esc>Beide Varianten haben Vor- und Nachteile:
jkist die populärere Wahl. Der einzige Stolperstein: Wer einen englischen Markdown-Text schreibt und die Buchstaben „jk" tatsächlich tippen will (kommt vor, wenn auch selten), hat einen kurzen Hänger. Workaround: zwischen den Tasten eine kleine Pause machen — Vimstimeoutlen-Option (Default: 1000ms) bestimmt, wie lange Vim auf die zweite Taste wartet.jjhat denselben Konflikt mit Buchstaben-Sequenzen „jj" im Text. In der Praxis kommt das in deutschem und englischem Text praktisch nie vor — die Variante ist daher konflikt-ärmer.
Eine dritte, weniger verbreitete Variante mappt Esc auf Capslock — über die Tastatur-Konfiguration des Betriebssystems, nicht über Vim. Wer Capslock ohnehin nie braucht (was die meisten betrifft), gewinnt damit eine perfekt erreichbare Esc-Taste in jedem Programm, nicht nur in Vim.
Für den Anfang ist es klüger, nichts zu mappen und sich an <C-[> zu gewöhnen — das funktioniert ohne Konfiguration auf jedem System. Erst wenn der Reflex sitzt, lohnt sich die Optimierung über ein Mapping.
Modus-Indikatoren — woran du den Normal-Mode erkennst
Vim teilt dir an drei Stellen mit, in welchem Modus du gerade bist:
- Die Statusline (zweitunterste Zeile): Default zeigt sie im Normal-Mode den Dateinamen, Cursor-Position und Position im Buffer. Im Insert-Mode steht zusätzlich
-- INSERT --ganz unten, im Visual-Mode-- VISUAL --, im Replace-Mode-- REPLACE --. Mit einem Statusline-Plugin (Kapitel 16) wird der Modus zusätzlich farblich hervorgehoben. - Die unterste Zeile (Command-Line): Im Command-Line-Mode zeigt sie deinen Befehl in Echtzeit an — beginnend mit
:,/,?oder!. Im Normal-Mode ist sie leer (oder zeigt eine letzte Statusmeldung). - Die Cursor-Form: Bei modernen Terminals und Vim-Builds wechselt der Cursor seine Form je nach Modus — Block im Normal-Mode, vertikaler Strich im Insert-Mode, Unterstrich im Replace-Mode. Das geschieht über DECSCUSR-Sequenzen, die ein gut konfigurierter Terminal-Emulator unterstützt. Wer das Verhalten nicht hat: tmux-Hinweise im Linux-Artikel erklären die typischen Ursachen.
Wer sich verloren fühlt: einmal Esc drücken. Wenn die Statusline keine -- MODUS ---Meldung mehr zeigt und der Cursor wieder als Block erscheint, bist du im Normal-Mode.
Ein Tag im Normal-Mode
Zur Illustration, wie ein typischer Edit-Workflow aussieht — gänzlich ohne den Insert-Mode zu betreten:
" Aufgabe: in einer Datei alle drei Stellen mit "TODO" finden
" und das Wort "DONE" davor einfügen.
gg " an den Buffer-Anfang springen
/TODO " erste Stelle finden, <CR>
cwDONE<Esc> " "TODO" durch "DONE" ändern (Insert + Esc) — der EINZIGE
" Insert-Mode-Schritt der ganzen Aufgabe
n " nächste Stelle finden
. " den letzten Edit wiederholen (cwDONE<Esc>)
n " nächste Stelle
. " wiederholen
:w " speichernDie Aufgabe ist in acht Tastendrücken erledigt (gg /TODO <CR> cwDONE <Esc> n . n . :w <CR>). Der Insert-Mode kam genau einmal vor, für vier Buchstaben. Der Rest ist Normal-Mode-Komposition — und wiederholbar mit . über beliebig viele weitere Treffer.
Das ist der Grund, warum Vim-Nutzer den Normal-Mode als „Heimat" beschreiben: in ihm spielt die Musik.
Besonderheiten
Wenn du dich verloren fühlst: Esc, Esc
Zweimal Esc ist die universelle Notbremse. Aus jedem beliebigen Modus, aus jeder unvollständigen Befehlssequenz, aus jedem geöffneten Popup — zweimal Esc bringt dich zurück in den Normal-Mode mit leerem Buffer-Eingang. Es ist die einzige Tastenfolge, die in Vim immer sicher ist.
Operator-pending mode — der versteckte Halbmodus
Wenn du im Normal-Mode einen Operator wie d tippst und auf die Motion wartest, bist du technisch im operator-pending mode (:help omap-info). Manche Mappings gelten nur in diesem Halbmodus — z. B. ein eigenes Text-Object über onoremap. Für die Praxis: kein eigener „Modus" im Sinne der Anzeige, aber konzeptuell wichtig.
`x`, `X`, `D`, `C`, `Y` als Abkürzungen
Ein paar Kurz-Befehle sind so verbreitet, dass sie eigene Tasten haben statt einer Operator-Motion-Kombi: x = dl (Zeichen rechts löschen), X = dh (links löschen), D = d$ (bis Zeilenende löschen), C = c$ (bis Zeilenende ändern), Y = yy (Zeile kopieren, in modernem Vim per Default). Lohnt sich, weil so häufig.
Counts gelten für Motions UND Operatoren
3w bewegt drei Wörter vorwärts. 3dd löscht drei Zeilen. d3w löscht drei Wörter. 3d2w löscht sechs Wörter (3 × 2). Counts sind multiplikativ und lassen sich auf beiden Seiten einer Operator-Motion-Kombi setzen — Vim macht keinen Unterschied.
`` ist die heimliche Brücke zwischen Insert und Normal
Wer im Insert-Mode kurz einen einzelnen Normal-Mode-Befehl ausführen möchte, drückt Ctrl-o + den Befehl. Vim führt den Befehl aus und kehrt sofort in den Insert-Mode zurück. Beispiel: <C-o>dd löscht die aktuelle Zeile, ohne dass du Insert verlassen musst. Praktisch beim Schreiben — aber nicht überstrapazieren, sonst geht das Mental Model verloren.
Capslock auf Esc mappen — die OS-Variante
Statt jk/jj in Vim zu mappen, kannst du auf OS-Ebene Capslock auf Esc legen. Auf macOS: Systemeinstellungen → Tastatur → Sondertasten. Auf Linux: setxkbmap -option caps:escape. Auf Windows: PowerToys oder ein Tool wie SharpKeys. Der Vorteil: die Esc-Taste ist dann überall auf der Heimreihe, nicht nur in Vim — auch in der Shell, im Browser, im Terminal.
Weiterführende Ressourcen
Externe Quellen
- Vim Help: Normal-Mode — formale Definition.
- Vim User-Manual usr_02 — The First Steps in Vim — Einführung in die wichtigsten Normal-Mode-Befehle.
- Vim Help: motion.txt — vollständige Referenz aller Motions.
- Vim Help: change.txt — Operatoren und Edit-Befehle.