vi ist ein seitenorientierter Texteditor, den es auf praktisch jedem *nix-basierten System gibt. Seine Bedienung war schon immer kryptisch und ist aus heutiger Sicht, mit den Annehmlichkeiten grafischer Benutzeroberflächen und Maussteuerung, geradezu als barbarisch zu betrachten. Ungeachtet dessen gibt es Situationen, in denen es äußert hilfreich ist den vi – zumindest rudimentär – bedienen zu können.
Dabei glänzt der Editor, trotz seines Alters, mit einer erstaunlichen Funktionsfülle, die sich aber nur entfalten kann, wenn man die zahllosen Kommandos und Tastenkombinationen kennt. Zwar gibt es zum vi endlos viele Einführungen, Tutorials, Referenzen und Kommandoübersichten im Netz, aber gerade die letztgenannten Zusammenfassungen versuchen häufiger durch Menge, denn durch eine Zusammenstellung der wirklich nützlichen Kommandos zu glänzen. Vor diesem Hintergrund gibt es hier die geschätzt 5.009.536te Kommandotabelle mit den wirklich 😉 nützlichen Befehlen für den vi.
Kommando | Erklärung |
---|---|
i | Wechsel in Editiermodus |
ESC | Wechsel in Navigationsmodus |
gg | Dateibeginn |
G | Dateiende; nnG springt zu Zeile nn |
Ctrl+f | eine Bildschirmseite vor |
Ctrl+b | eine Bildschirmseite zurück |
w | ein Wort vorwärts |
b | ein Wort rückwärts |
0 | Zeilenanfang |
$ | Zeilenende |
dw | löscht ab Cursor bis Wortende |
d0 | löscht bis Zeilenanfang |
D | löscht bis Zeilenende |
dd | aktuelle Zeile löschen; NNdd löscht NN Zeilen |
dgg | löscht aktuelle Zeile bis Dateianfang |
dG | löscht aktuelle Zeile bis Dateiende |
mx | markiert aktuelle Zeile mit Buchstabe x |
d’x | löscht aktuelle Zeile bis Markierung x |
yy | kopiert aktuelle Zeile in Puffer; NNyy kopiert NN Zeilen |
y’x | kopiert aktuelle Zeile bis Markierung x in Zwischenablage x |
‘x | springt in die Zeile mit Marke x |
`x | springt an die Stelle mit Marke x |
p | kopiert Pufferinhalt ans Ende der aktuellen Zeile |
“a–z | Zwischenablage a–z für nächste Aktion auswählen |
u | Undo; NNu macht die letzten NN Aktionen rückgängig |
$ | Zeilenende |
/regex | sucht nach regulärem Ausdruck regex; weitere Treffer mit n |
?regex | wie /, sucht aber in Richtung Dateianfang |
:s/foo/bar/ | aktuelle Zeile: das erste Vorkommen von foo durch bar ersetzen |
:s/foo/bar/g | aktuelle Zeile: alle Vorkommen von foo durch bar ersetzen |
:%s/foo/bar/ | gesamte Datei: das erste Vorkommen von foo durch bar in jeder Zeile ersetzen |
:%s/foo/bar/g | gesamte Datei: alle Vorkommen von foo durch bar ersetzen |
:w | Datei speichern |
:w filename | Datei unter filename speichern |
:e filename | Datei filename laden |
:q | vi beenden; :q! beendet ohne Rückfrage, falls Datei geändert wurde |
ZZ | Änderungen schreiben und vi beenden; Abk. für :wq! |