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:
|
|
Sollte das Paket auf deiner Distribution nicht vim
heissen, so kannst du vorher mit einer Suche eine geeignete Variante finden:
|
|
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:
|
|
Modi in vi
Anders als viele andere Editoren arbeitet vi
mit verschiedenen Modi:
- Normal-Modus (Command-Mode) = zum Navigieren und Ausführen von Befehlen
- Einfüge-Modus (Insert-Mode) = zum Editieren von Text
- 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:
|
|
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:
|
|
- drücke
i
, um in den Einfüge-Modus zu wechseln - bearbeite deinen Text
- drücke
Esc
, um in den Normal-Modus zurückzukehren - tippe
:wq
und drückeEnter
, 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:
|
|
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:
- drücke im Normal-Modus
/
- gib deinen Suchbegriff ein
- drücke
Enter
- mit
n
findest du das nächste Vorkommen, mitN
das vorherige
Text ersetzen
Um Text zu ersetzen:
- tippe im Normal-Modus
:s/alt/neu/g
, um in der aktuellen Zeile alle Vorkommen zu ersetzen - tippe im Normal-Modus
:1,$s/alt/neu/g
, um in der gesamten Datei zu ersetzen - 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:
|
|
Oder bereits beim Öffnen mit dem neueren vim
:
|
|
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:
|
|
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:
|
|
Änderung rückgängig machen
Wenn du dich vertan hast, kannst du so den letzten Schritt rückgängig machen:
|
|
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ürvim
) - 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:
- Drücke
Esc
(eventuell mehrmals), um in den Normal-Modus zu gelangen - Tippe
:q!
und drückeEnter
, 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.