vi-Editor unter Linux

Der klassische Terminal-Editor für Profis

Der Editor vi ist einer der ältesten und mächtigsten Texteditoren in der Unix-Welt. Der Name ist - wie bei anderen Befehlen - eine Abkürzung und die steht für “visual editor”. Er ist auf praktisch jedem Unix-ähnlichen System vorinstalliert und gilt als Standard-Editor für viele Systemadministratoren.

Die moderne Version vim (Vi Improved) bietet zusätzliche Funktionen, baut aber auf der gleichen Basis auf.

Dieser Artikel zeigt dir, wie du vi unter Linux effektiv nutzen kannst, um Dateien direkt in der Shell zu bearbeiten.

Installation

In den meisten Linux-Distributionen ist vi oder ein Symlink zu vim bereits vorinstalliert. Du kannst dies mit which vi prüfen.

Falls du dennoch eine Installation vornehmen musst, sind hier die Varianten für einige Distributionen:

1
2
3
4
5
6
# auf Debian-basierten Systemen:
sudo apt install vim
# unter Fedora, Redhat, Rocky & Co.:
sudo dnf install vim
# unter OpenSuse und SLES:
sudo zypper install vim

Sollte das Paket auf deiner Distribution nicht vim heissen, so kannst du vorher mit einer Suche eine geeignete Variante finden:

1
2
3
4
5
6
# auf Debian-basierten Systemen:
apt search vim
# unter Fedora, Redhat, Rocky & Co.:
dnf search vim
# unter OpenSuse und SLES:
zypper search vim

Sobald du ein Ergebnis hast, installierst du einfach die gewünschte Variante. Zum Beispiel kann man auf Debian vim-nox oder auf Fedora vim-enhanced verwenden.

Grundlegende Syntax

Die allgemeine Syntax für den Aufruf des Editors sieht so aus:

1
vi [Optionen] [Dateiname]

Modi in vi

Anders als viele andere Editoren arbeitet vi mit verschiedenen Modi:

  1. Normal-Modus (Command-Mode) = zum Navigieren und Ausführen von Befehlen
  2. Einfüge-Modus (Insert-Mode) = zum Editieren von Text
  3. Kommandozeilen-Modus = für erweiterte Befehle wie Speichern, Suchen etc.

Der Editor startet immer im Normal-Modus. Um Text einzugeben, musst du zunächst in den Einfüge-Modus wechseln.

Einfaches Beispiel

Machen wir das gleich praktisch. Hier siehst du, wie man mit vi eine bestehende Datei bearbeitet:

1
vi datei.txt

Nach dem Öffnen befindest du dich im Normal-Modus. Zum Eingeben von Text drücke i (für insert), um in den Einfüge-Modus zu wechseln. Mit Esc kehrst du in den Normal-Modus zurück.

Und zum Schliessen musst du einen Befehl im Normal-Modus verwenden. Zwei wichtige sind :wq zum Speichern und Schliessen sowie :q! zum Verlassen ohne speichern.

Hier könntest du jetzt aufhören. Aber vi kann noch viel, viel mehr und wenn du dranbleibst, kannst du damit unheimlich produktiv werden.

Mach am besten mit, dann wird es dir am schnellsten in Fleisch und Blut übergehen.

Optionen beim Aufruf von vi

Schauen wir uns zunächst einige nützliche Optionen für den Start von vi an:

Option Bedeutung
-R öffnet eine Datei im schreibgeschützten Modus (readonly)
-r stellt nach Absturz eine verlorene Datei wieder her
+ öffnet die Datei am Ende
+n öffnet die Datei an der Zeile n (positive Zahl)
-c Befehl führt nach dem Öffnen einen vi-Befehl aus

Wichtige Befehle im Normal-Modus

Im Normal-Modus kannst du mit folgenden Befehlen navigieren und arbeiten:

Befehl Funktion
h Cursor nach links bewegen ⬅️
j Cursor nach unten bewegen ⬇️
k Cursor nach oben bewegen ⬆️
l Cursor nach rechts bewegen ➡️
w zum Anfang des nächsten Wortes springen
b zum Anfang des vorherigen Wortes springen
0 zum Anfang der aktuellen Zeile springen
$ zum Ende der aktuellen Zeile springen
gg zur ersten Zeile der Datei springen
G zur letzten Zeile der Datei springen
yy aktuelle Zeile kopieren
dd aktuelle Zeile löschen
p nach dem Cursor einfügen
P vor dem Cursor einfügen
u letzte Aktion rückgängig machen

Navigation ist zwar auch mit den Pfeiltasten deiner Tastatur möglich, aber wenn du das einmal verinnerlicht hast, wirst du nicht mehr zurückwollen 😁

In den Einfüge-Modus wechseln

Es gibt mehrere Möglichkeiten, in den Einfüge-Modus zu wechseln:

Befehl Funktion
i Text an der aktuellen Cursorposition einfügen
I Text am Anfang der Zeile einfügen
a Text nach der aktuellen Cursorposition einfügen
A Text am Ende der Zeile einfügen
o neue Zeile unter der aktuellen Zeile öffnen
O neue Zeile über der aktuellen Zeile öffnen

Mit Esc kehrst du immer in den Normal-Modus zurück.

Kommandozeilen-Modus

Zum Wechsel in den Befehlszeilen-Modus drücke im Normal-Modus die Taste : (Doppelpunkt). Dann erscheint am unteren Rand des Bildschirms ein Doppelpunkt, und du kannst verschiedene Befehle eingeben:

Befehl Funktion
:w Datei speichern
:q Editor verlassen bei unveränderter Datei
:q! Editor verlassen ohne speichern
:wq speichern und verlassen
:x speichern und verlassen (Alternative zu :wq)
:set nu Zeilennummern anzeigen
:set nonu Zeilennummern ausblenden
/Muster vorwärts nach “Muster” suchen
?Muster rückwärts nach “Muster” suchen

Apropos unterer Rand: In der unteren Zeile in deinem Terminal zeigt vi hilfreiche Informationen an, wie zum Beispiel den Befehl, den du gerade eingibst.

Praktische Beispiele

Das kann anfangs ganz schön überwältigend aussehen. Aber lass dich davon nicht abschrecken 😨

Mit etwas Praxis und deinem eigenen Spickzettel wirst du schnell alles Wesentliche verinnerlicht haben!

Dafür sehen wir uns jetzt einige Anwendungsfälle an.

Datei öffnen und bearbeiten

Das ist der grundlegende Aufruf, wie wir ihn oben schon hatten:

1
vi config.ini
  1. drücke i, um in den Einfüge-Modus zu wechseln
  2. bearbeite deinen Text
  3. drücke Esc, um in den Normal-Modus zurückzukehren
  4. tippe :wq und drücke Enter, um zu speichern und zu beenden

mehrere Dateien gleichzeitig öffnen

Du kannst aber auch eine Liste von Dateien angeben, die du öffnen willst. Hier lassen sich auch die üblichen Wildcards deiner Shells verwenden:

1
vi file1.txt file2.txt

Um zwischen den offenen Dateien zu wechseln, verwende im Normal-Modus :n (nächste Datei) oder :prev (vorherige Datei).

Text suchen

Um einen Text zu suchen:

  1. drücke im Normal-Modus /
  2. gib deinen Suchbegriff ein
  3. drücke Enter
  4. mit n findest du das nächste Vorkommen, mit N das vorherige

Text ersetzen

Um Text zu ersetzen:

  1. tippe im Normal-Modus :s/alt/neu/g, um in der aktuellen Zeile alle Vorkommen zu ersetzen
  2. tippe im Normal-Modus :1,$s/alt/neu/g, um in der gesamten Datei zu ersetzen
  3. füge ein c hinzu, um jede Ersetzung zu bestätigen: :1,$s/alt/neu/gc

Hier steht jeweils alt für das, was gesucht werden soll und neu für das, womit es ersetzt wird.

Zeilennummern anzeigen

Im Normal-Modus kannst du im vi so die Anzeige von Zeilenzahlen aktivieren:

1
2
# Im vi:
:set number

Oder bereits beim Öffnen mit dem neueren vim:

1
vim +set\ number datei.txt

Gerade bei umfangreichen Dateien kann das sehr nützlich sein.

Datei an bestimmter Stelle öffnen

Dieser kleine Zusatz öffnet die Datei und positioniert den Cursor in der angegebenen Zeile:

1
vi +100 datei.txt

Bei Angabe einer zu grossen Zahl landest du automatisch am Ende des Files.

Mehrere Zeilen löschen

Mit diesem Befehl kannst du an der aktuellen Postion des Cursors n (hier 10) Zeilen löschen:

1
:10dd 

Änderung rückgängig machen

Wenn du dich vertan hast, kannst du so den letzten Schritt rückgängig machen:

1
u

Tipps für Einsteiger

Da der Einstieg in vi etwas schwierig sein kann, folgen hier einige Tipps, mit denen du deine Lernkurve abflachen kannst:

  • drucke oder speichere dir deinen eigenen, kleinen Spickzettel mit den wichtigsten Befehlen
  • verwende vimtutor (ein interaktives Tutorial für vim)
  • vergiss nicht, vor dem Tippen in den Einfüge-Modus zu wechseln
  • wenn du nicht weißt, in welchem Modus du bist, drücke Esc um sicherzustellen, dass du im Normal-Modus bist

Das Wichtigste aber ist: Trau dich einfach und probiere alles selbst aus!

Notfall-Ausstieg

Wenn du völlig verwirrt bist und vi verlassen möchtest:

  1. Drücke Esc (eventuell mehrmals), um in den Normal-Modus zu gelangen
  2. Tippe :q! und drücke Enter, um ohne Speichern zu beenden

Fazit

Der vi-Editor mag anfangs komplex erscheinen, aber seine Effizienz und Leistungsfähigkeit machen ihn zu einem unverzichtbaren Werkzeug für Linux-Administratoren. Mit etwas Übung wirst du feststellen, dass du mit wenigen Tastendrücken komplexe Textbearbeitungen durchführen kannst.

Falls du es noch nicht getan hast: Probiere jetzt alle Beispiele aus diesem Artikel bei dir aus!

Hilfe zu vi

Mehr zu vi und vim findest du unter man vi, man vim und tldr vim. Oder nutze vimtutor für ein umfangreiches, praktisches Tutorial.

Details zum Befehl tldr gibt es hier.

Erstellt mit Hugo
Theme Stack gestaltet von Jimmy