vi und vim – eine Kommandoreferenz

Unter Unix und unixoiden Betriebssystemen, zu denen auch Linux gehört, ist es oftmals nötig Textdateien zu editieren denn die Konfigurationsdateien z.B. sind, im Gegensatz zu Windows, meistens einfache Textdateien im ASCII-Format. Daher gibt es unter diesen Betriebssystemen einen ganzen Zoo an Editoren. Einer der meist genutzten Editoren ist vi bzw. seine Erweiterung vim. Der Grund ist das vi ein Editor für die Konsole ist und damit auch zu gebrauchen ist wenn die grafische Oberfläche nicht starten will aber auch seine sehr mächtigen Werkzeuge. Ein weiterer Grund ist, dass vi auf jedem POSIX-System installiert ist was in Rettungssituationen einfach notwendig ist den Editor bedienen zu können.

vi ist ein recht alter Editor der entwickelt wurde bevor es grafische Oberflächen gab und kann daher komplett mit der Tastatur bedient werden. Für Neulinge ist etwas ungewohnt, dass vi verschiedene Modi kennt. Auf vielen Linux-Distributionen ist vi ein symbolischer Link auf vim, also den verbesserten vi-Editor (vim steht für vi-improved), und es wird daher beim Aufruf von vi in Wirklichkeit vim gestartet.

Wenn man eine Textdatei mit vi öffnet ist man nicht, wie man zunächst erwarten würde, in einem Editiermodus sondern im Normalmodus. Hier kann man zwar den Cursor bewegen aber keinen Text eingeben oder verändern.

vim im Befehlsmodus mit geöffnetem /etc/fstab

Ist man in einem andern Modus so kommt man durch Drücken der Taste ESC immer wieder in den Befehlsmodus. Durch Drücken der Taste i wird nun in den Bearbeitungsmodus gewechselt. Den Cursor kann man in beiden Modi bewegen. Zwar geht das Bewegen des Cursors auch mit Buchstabentasten aber es ist empfehlenswert dafür die Cursortasten (Pfeiltasten) zu benutzen. Unten rechts wird in beiden Modi die aktuelle Zeilennummer und die Spaltennummer, durch ein Komma getrennt, und zusätzlich Informationen über die Position im Text (Beginn, Ende oder eine Prozentangabe) angezeigt.

Durch Drücken der Taste i kommt man in den Eingabemodus. Nun kann man den Text editieren.

vim im Eingabemodus

Die Stärke von vi/vim liegt darin, dass der Editor unglaublich mächtig ist und die Schwäche darin, dass er dadurch auch recht kompliziert und nicht intuitiv zu bedienen ist. Mit dem Eingabemodus kommt man normalerweise schon schnell klar da er sich in den Grundzügen wenig von einem GUI-Editor unterscheidet. Man erreicht vor allem mit vim da einen ähnliche Komfort wie bei Kate oder ähnlichen GUI-Editoren. Ganz im Gegensatz zum Befehlsmodus bei dem es mehr oder minder kryptische Befehle gibt.

Die wichtigsten Befehle werden nun hier in dieser Kommandoreferenz vorgestellt. Es gibt eine durchaus vollständigere Befehlsreferenzen für vi/vim aber diese hier sollte ein komfortables Arbeiten damit zulassen.

vi starten und beenden, Datei öffnen, speichern und schließen

KommandoFunktion
vi /pfad/zur/dateiÖffnen einer Datei mit vi
:qBeendet vi mit der Datei ohne abzuspeichern
:q!Beendet vi mit der Datei und erzwingt das diese auch mit Veränderung nicht abgespeichert wird
:wVeranlasst, dass die Datei abgespeichert wird
:wqBeendet vi und veranlasst, dass die Datei abgespeichert wird
:wq!Beendet vi und erzwingt das Abspeichern einer Datei
CTRL-zSchickt vi mit der geöffneten Datei in den Hintergrund und öffnet eine Shell – Rückkehr erfolgt mit dem Shellbefehl fg

Wie man eine Datei abspeichern kann obwohl man nicht die korrekten Benutzerrechte hat habe ich hier erläutert.

Der nächste Block beschreibt die Bewegungen des Cursors mittels der Tastatur. Natürlich geht heute mit dem Cursorblock bzw. Pfeiltasten einfacher aber vi stammt aus einer Zeit da diese Tasten noch nicht zur Standard bei einer Tastatur war und die Verbindung zu einem *NIX-Rechner über ein dummes Terminal erfolgte.

Cursorbewegungen und Positionierung

KommandoFunktion
G, Zahl und GG verschiebt den Cursor ans Ende der Datei und Zahl+G in die Zeilennummer Zahl
0 oder ^Versetzt den Cursor an den Zeilenanfang
$Versetzt den Cursor ans Zeilenende
wVersetzt den Cursor an den Anfang des nächsten Wortes
bVersetzt den Cursor an das Ende des nächsten Wortes
h oder Pfeiltaste linksVersetzt den Cursor einen Buchstaben nach links
j oder Pfeiltaste untenVersetzt den Cursor eine Zeile nach unten
k oder Pfeiltaste obenVersetzt den Cursor eine Zeile nach oben
l oder Pfeiltaste rechtsVersetzt den Cursor einen Buchstaben nach rechts
STRG-uEine halbe Seite nach oben versetzen
STRG-dEine halbe Seite nach unten versetzen

Löschen und ändern

KommandoFunktion
x oder entf.Zeichen unter dem Cursor löschen
sZeichen unter dem Cursor löschen und in den Bearbeitungsmodus gehen
rZeichen unter dem Cursor ersetzen
Zahl ddAktuelle Zeile löschen oder durch Zahl bestimmte Anzahl von Zeilen löschen

Arbeiten mit der Zwischenablage

KommandoFunktion
Y oder Zahl YKopiert die aktuelle Zeile oder durch Zahl angegebene Anzahl Zeilen in die Zwischenablage
yw oder Zahl ywKopiert das aktuelle Wort oder durch Zahl angegebenen Anzahl an Wörtern in die Zwischenablage
pInhalt der Zwischenablage wird hinter die aktueller Zeile einfügen
PInhalt der Zwischenablage wird vor die aktueller Zeile einfügen
iIn Eingabemodus wechseln
RIn Eingabemodus und Überschreiben wechseln
AAns Ende der Zeile springen und in den Eingabemodus wechseln
IAn den Anfang der Zeile springen und in den Bearbeitungsmodus wechseln

Suchen und Ersetzen

Suchen und Ersetzen sind in einem Texteditor eine elementare Funktion und vi bietet natürlich auch diese Möglichkeit. Anders ist es mühsam z.B. in Konfigurationsdateien bestimmte Zeichenketten zu finden.

KommandoFunktion
/TextAb der aktuellen Position die Zeichenkette Text abwärts suchen und zum ersten Auftreten springen
?TextAb der aktuellen Position die Zeichenkette Text aufwärts suchen und zum ersten Auftreten springen
nSuche wiederholen – sowohl aufwärts als auch abwärts
:%s/Text1/Text2/g In der kompletten Textdatei Text1 durch Text2 ersetzen
:Zahl1,Zahl2s/Text1/Text2/g Von Zeile Zahl1 bis zur Zeile2 die Zeichenkette Text1 durch Zeichenkette Text2 ersetzen

Rückgänig machen

KommandoFunktion
uLetzte Änderung rückgängig machen
ULetzte Änderung in der aktuellen Zeile rückgängig machen

 

kais-universum.de