Jeder der eine Unix Shell nicht oder nur rudimentär kennt, denkt sich, dass die Leute, die freiwillig mit dem vi als Editor arbeiten, Masochisten sein müssen. Aber der vi hat einen unschlagbaren Vorteil → Er ist standardmäßig auf nahezu jedem Unixsystem installiert. So haben vor allem Administratoren, die auf unterschiedlichen Unixsystemen arbeiten, welche ihnen zT gar nicht selbst gehören, immer einen brauchbaren und obendrein sehr mächtigen Editor zur Hand. Dieser Artikel stellt eine kleine Kurzreferenz für die gebräuchlichsten vi-Kommandos zusammen:
Der vi kennt drei Betriebsmodis → Den View-Modus; den Insert-Modus und den Command-Modus. Die Modis View und Insert werden über die ESC Taste gewechselt, der Command-Modus wird vom View-Modus aus mit einem Doppelpunkt, Slash, Fragezeichen oder Rufezeichen eingeleitet. Der einfachste Aufruf erfolgt in einem Terminal, wobei die zu öffnende Datei angelegt wird, falls diese nicht vorhanden ist:
$ vi ~/Datei.txt # Öffnet die Datei Datei.txt im Homedirectory oder legt diese an, wenn nicht vorhanden
Nach dem einfachen Öffnen einer Datei befindet sich der Editor automatisch im View-Modus. Sie können mit den Pfeil-Tasten im Text navigieren, sie können aber folgende Kommandos benutzen um im Text zu navigieren. Dazu muss der Editor im View-Modus sein.
Im Text bewegen:
Befehl | Beschreibung | |
---|---|---|
nG | Springen des Cursors zum Dateiende oder zur n-ten Zeile | |
^ 0 | Springen des Cursors zum Anfang der aktuellen Zeile | |
n$ | Springen des Cursors zum Ende der aktuellen oder n-ten Zeile | |
nb | Springen des Cursors zum Anfang des aktuellen oder n-ten Wortes | |
B | Springen des Cursors zum Anfang des aktuellen oder nten Wortes (Leerzeichen als Trenner) | |
ne | Springen des Cursors zum Ende des aktuellen oder n-ten Wortes | |
nE | Springen des Cursors zum Ende des aktuellen oder n-ten Wortes (Leerzeichen als Trenner) | |
nw | Springen des Cursors zum Anfang des nächsten oder n-ten Wortes | |
nW | Springen des Cursors zum Anfang des nächsten oder n-ten Wortes (Leerzeichen als Trenner) | |
Enter | Springen des Cursors zum ersten Zeichen der nächsten Zeile | |
nj | Cursor eine oder n Zeilen nach unten bewegen | |
nk | Cursor eine oder n Zeilen nach oben bewegen | |
nl | Cursor ein oder n Zeichen vor bewegen (nur bis zum Ende der Zeile) | |
nh / ← | Cursor ein oder n Zeichen zurück bewegen (nur bis zum Anfang der Zeile) | |
nStrg-f | Cursor eine oder n Seiten vor bewegen | |
nStrg-b | Cursor eine oder n Seiten zurück bewegen | |
t | Springen des Cursors zur nächsten Tabulatorposition | |
H | Cursor am Bildschirmanfang positionieren | |
M | Cursor in der Bildschirmmitte positionieren | |
L | Cursor am Bildschirmende positionieren |
Um Text einzufügen bzw. zu editieren verwenden Sie folgende Befehle. Wenn Sie im View-Modus einen dieser Befehle absetzen, wechselt der Editor automatisch in den Insert-Modus. Sie sehen das idR ganz unten im Editor Fenster, dort steht in der Fusszeile dann "Insert" bzw. "Einfügen":
Text editieren:
Befehl | Beschreibung | |
---|---|---|
a | Text hinter dem Cursor einfügen | |
A | Text am Ende der Zeile einfügen | |
i | Text vor dem Cursor einfügen | |
I | Text am Zeilenanfang einfügen | |
o | Neue Zeile unter Cursor einfügen | |
O | Neue Zeile über Cursor einfügen |
Text verändern und löschen:
Befehl | Beschreibung | |
---|---|---|
ncw | Aktuelles oder n Wörter ändern; Löscht die ausgewählten Wörter und plaziert Cursor | |
ncW | Aktuelles oder n Wörter ändern nur mit Leerzeichen als Trenner | |
nS | Aktuelle oder n Zeilen ändern | |
nC | Text von der aktuellen Cursorposition bis zum aktuellen oder n-ten Zeilenende ändern | |
ndd | Aktuelle oder n Zeilen löschen | |
D | Bis zum aktuellen Zeilenende löschen | |
ndw | Aktuelles oder n Wörter löschen | |
ndW | Aktuelles oder n Wörter löschen nur mit Leerzeichen als Trenner | |
nd} | Bis zum nächsten oder nten Absatz löschen | |
d/Muster | Bis zum nächsten Vorkommen des Musters löschen | |
dL | Bis zum Bildschirmende löschen | |
dG | Bis zum Dateiende löschen | |
p | Zuletzt gelöschten / kopierten Text hinter dem Cursor einfügen | |
P | Zuletzt gelöschten / kopierten Text vor dem Cursor einfügen | |
U | Aktuelle Zeile restaurieren | |
u | Letzte Änderung rückgängig machen (undo) | |
nx | Ein oder n Zeichen ab dem Cursor löschen | |
nX | Ein oder n Zeichen links vom Cursor löschen | |
nJ | Zeile mit nächster oder den nächsten n Zeilen zusammenfügen | |
. | Letzte Änderung wiederholen | |
~ | Groß- und Kleinschreibung vertauschen | |
:r Datei | Einlesen der Datei unter die aktuelle Zeile | |
:%s/Muster1/Muster2/ | Ersetze Muster 1 mit Muster 2 im gesamten Dokument |
Text kopieren bzw einfügen:
Befehl | Beschreibung | |
---|---|---|
nyy | Aktuelle Zeile oder n Zeilen kopieren | |
p | Inhalt der Zwischenablage nach der aktuellen Zeile einfügen | |
P | Inhalt der Zwischenablage vor der aktuellen Zeile einfügen | |
:set paste | Einrücken bei copy & paste verhindern |
Text speichern und vi verlassen:
Befehl | Beschreibung | |
---|---|---|
:x | vi beenden, Datei nur sichern, wenn Änderungen vorgenommen wurden | |
:w | Datei sichern | |
:w Dateiname | Aktuell bearbeitete Datei in Dateiname sichern | |
:w! | Datei sichern trotz Schreibschutz | |
:q! | Datei trotz Änderungen ungesichert verlassen | |
:n | Nächste Datei bearbeiten | |
wq | Datei speichern und vi verlassen |
Suchen in Datei:
Befehl | Beschreibung | |
---|---|---|
/Muster | Vorwärts gerichtete Suche nach Muster | |
?Muster | Rückwärts gerichtete Suche nach Muster | |
n | Springe nach unten zum nächsten Muster | |
N | Springe nach oben zum nächsten Muster |
— pronto 2010/04/06 22:48