Linux vi Befehle: Übersicht | Vim Cheat Sheet mit 3 Modi und visuellem Modus

vi öffnen und feststellen, dass nichts von dem Getippten erscheint, oder das Fenster schließen, weil man nicht weiß, wie man wieder herauskommt: Das erlebt fast jeder einmal, der zum ersten Mal an einem Server arbeitet. Der Linux-vi-Befehl, also der Editor vi, trennt Normalmodus und Einfügemodus; weißt du, in welchem Modus du gerade bist, erledigst du den Rest mit ein paar Tasten. Dieser Beitrag fasst die drei Modi und die Befehle für jeden Modus in Tabellen zusammen, und auf einem virtuellen Server im Browser kannst du vi selbst ausprobieren.
Unter AlmaLinux 9.8 stammen vi und vim beide aus dem Paket vim 8.2; Bildschirme und Meldungen in diesem Beitrag stammen aus vim. Ist es nicht installiert, installierst du es mit [dnf -y install vim-enhanced].
✅ Die drei Modi von vi
In vi macht dieselbe Taste je nach Modus etwas anderes. Eine Datei öffnet sich im Normalmodus; mit i wechselst du in den Einfügemodus und tippst, mit Esc kommst du zurück, und mit einem Doppelpunkt [:] gelangst du in den Kommandozeilenmodus, um zu speichern und zu beenden.
| Modus | Taste zum Wechseln | Was es tut |
|---|---|---|
| Normalmodus | Startmodus von vi · Esc aus jedem anderen Modus | Cursor bewegen, löschen, kopieren, einfügen, rückgängig machen |
| Einfügemodus | i a I A o O | Text eingeben. Unten auf dem Bildschirm steht [-- INSERT --] |
| Kommandozeilenmodus | : | Speichern, beenden, ersetzen, Zeilennummern einstellen. Unten auf dem Bildschirm erscheint : |
| Visueller Modus | v V Ctrl-v | Bereich markieren, dann löschen, kopieren oder auf allen Zeilen gleichzeitig einfügen |
In der Konsole gibt es drei Wege, eine Datei zu öffnen.
| Befehl | Beschreibung |
|---|---|
| vi Dateiname | Öffnet die Datei im Normalmodus. Gibt es die Datei nicht, wird sie neu angelegt und [New] angezeigt |
| vi +20 Dateiname | Öffnet mit dem Cursor in Zeile 20 |
| view Dateiname= vi -R | Schreibgeschützt öffnen. Beim Ändern erscheint die Warnung [W10], beim Speichern [E45] |
Tippst du auf dem virtuellen Server unten [vi httpd.conf], öffnet sich vi, und das Menü links wechselt zu den Befehlen in vi. Ein Klick auf einen Chip gibt diese Taste auf dem Bildschirm ein; du kannst sie auch mit der Tastatur tippen.
✅ Linux vi Befehle im Überblick
🔲 Cursor bewegen
| Taste | Beschreibung |
|---|---|
| h j k l← ↓ ↑ → | Ein Zeichen weiter. Pfeiltasten gehen auch |
| 0 · ^ | Zeilenanfang (0) · erstes Zeichen der Zeile, das kein Leerzeichen ist (^) |
| $ | Zeilenende |
| w · b · e | Anfang des nächsten Worts · Anfang des vorherigen Worts · Ende des nächsten Worts |
| gg · G | Erste Zeile · letzte Zeile der Datei |
| 20Gwie :20 | Zu Zeile 20. Mit einer anderen Zahl zu jeder beliebigen Zeile |
| H · M · L | Oberste · mittlere · unterste Zeile des Bildschirms |
| Ctrl-f · Ctrl-b | Eine Bildschirmseite nach unten · oben |
| Ctrl-d · Ctrl-u | Eine halbe Bildschirmseite nach unten · oben |
🔲 In den Einfügemodus wechseln
Egal mit welcher Taste du hineingehst: Bist du mit dem Tippen fertig, drückst du Esc. cw, cc, C und s löschen und wechseln sofort in den Einfügemodus; ein Wort oder eine Zeile zu korrigieren geht damit schneller, als x und i getrennt zu drücken.
| Taste | Beschreibung |
|---|---|
| i · a | Vor dem Cursor (i) · nach dem Cursor (a) mit der Eingabe beginnen |
| I · A | Am Zeilenanfang (I) · am Zeilenende (A) mit der Eingabe beginnen |
| o · O | Darunter (o) · darüber (O) eine leere Zeile anlegen und mit der Eingabe beginnen |
| cw | Vom Cursor bis zum Wortende löschen und mit der Eingabe beginnen |
| cc | Ganze Zeile löschen und mit der Eingabe beginnen |
| C | Vom Cursor bis zum Zeilenende löschen und mit der Eingabe beginnen |
| s | Ein Zeichen löschen und mit der Eingabe beginnen |
| Esc | Eingabe beenden und zurück in den Normalmodus |
🔲 Löschen und bearbeiten
Hängst du an d eine Bewegungstaste an, wird dieser Bereich gelöscht. dw löscht ein Wort, dd eine Zeile, dG alles bis zum Dateiende, und eine Zahl davor wiederholt es entsprechend oft.
| Taste | Beschreibung |
|---|---|
| x · X | Zeichen unter dem Cursor (x) · vor dem Cursor (X) löschen. 3x löscht drei Zeichen |
| dw | Vom Cursor bis zum Wortende löschen |
| dd | Zeile löschen. 3dd löscht drei Zeilen |
| D= d$ | Vom Cursor bis zum Zeilenende löschen |
| d0 | Vom Zeilenanfang bis vor den Cursor löschen |
| dG | Von der aktuellen Zeile bis zum Dateiende löschen |
| :6d · :6,10d | Zeile 6 löschen · Zeilen 6–10 löschen |
| J | Nächste Zeile an das Ende der aktuellen Zeile hängen |
| r | Zeichen unter dem Cursor durch das nächste getippte Zeichen ersetzen |
| ~ | Groß-/Kleinschreibung umschalten |
| >> · << | Zeile einrücken · ausrücken |
🔲 Kopieren, Einfügen und Rückgängig
Gelöschtes lässt sich wie Kopiertes mit p einfügen; drückst du dd und dann p, rutscht eine Zeile nach unten. u geht mehrere Schritte zurück, und Ctrl-r stellt Rückgängiggemachtes wieder her.
| Taste | Beschreibung |
|---|---|
| yy | Zeile kopieren. 3yy kopiert drei Zeilen |
| yw | Vom Cursor bis zum Wortende kopieren |
| p · P | Kopiertes darunter (p) · darüber (P) einfügen. Bei zeichenweisem Kopieren nach · vor dem Cursor |
| :1 co 7wie :1 t 7 | Zeile 1 kopieren und unter Zeile 7 einfügen |
| :1,7 co 8 | Zeilen 1–7 kopieren und unter Zeile 8 einfügen |
| :1 m 8 | Zeile 1 unter Zeile 8 verschieben |
| u | Rückgängig. Mehrfach drücken geht weiter zurück |
| Ctrl-r | Rückgängiggemachtes wiederherstellen |
| . | Letzte Änderung wiederholen |
🔲 Suchen und Ersetzen
Ersetzen geschieht im Kommandozeilenmodus. Ohne Bereich gilt es nur für die aktuelle Zeile, mit [%] für die ganze Datei, und ohne g am Ende ändert sich in jeder Zeile nur der erste Treffer.
| Taste | Beschreibung |
|---|---|
| /Zeichenkette | Ab dem Cursor nach unten suchen. Am Ende geht es oben weiter [search hit BOTTOM, continuing at TOP] |
| ?Zeichenkette | Ab dem Cursor nach oben suchen |
| n · N | Nächster Treffer in derselben Richtung (n) · in Gegenrichtung (N) |
| * | Wort unter dem Cursor nach unten suchen |
| :s/old/new/ | Erstes old in der aktuellen Zeile durch new ersetzen |
| :s/old/new/g | Jedes old in der aktuellen Zeile durch new ersetzen |
| :%s/old/new/g | Jedes old in der ganzen Datei durch new ersetzen |
| :10,20s/old/new/g | Jedes old in den Zeilen 10–20 durch new ersetzen |
| :%s/old/new/gc | Vor jeder Ersetzung nachfragen (y ersetzen · n überspringen · a alle · q aufhören) |
🔲 Speichern, Beenden und Zeilennummern
| Taste | Beschreibung |
|---|---|
| :w | Speichern. Danach steht dort [36L, 1094B written] |
| :w Dateiname | Unter anderem Namen speichern. Die Originaldatei bleibt unverändert |
| :wq= :x = ZZ | Speichern und beenden |
| :q | Beenden. Bei ungespeicherten Änderungen erscheint [E37: No write since last change] |
| :q! | Ohne Speichern beenden |
| :set nu · :set nonu | Zeilennummern zeigen · ausblenden |
✅ Eine Spalte mit dem visuellen Blockmodus von Vim auskommentieren
Willst du vor mehreren Zeilen denselben Text einfügen, nutzt du statt i in jeder Zeile den visuellen Blockmodus. Im Normalmodus markierst du mit v zeichenweise, mit Shift-v zeilenweise und mit Ctrl-v spaltenweise.
So kommentierst du einen ganzen Block einer Konfigurationsdatei aus: Setz den Cursor auf das erste Zeichen der ersten Zeile, drück Ctrl-v, geh mit j nach unten, um die Zeilen zu markieren, dann drück I, tipp # und drück Esc.



Das Entfernen der Kommentare funktioniert genauso. Markiere auf dem # der ersten Zeile mit Ctrl-v nach unten, drück x, und die markierte Spalte ist auf einmal gelöscht. Im Simulator oben kannst du das an vhost.conf direkt ausprobieren.
ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.