vi: Der Powereditor

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

tux/vi.txt (8416 views) · Zuletzt geändert: 2010/08/27 16:10 (Externe Bearbeitung)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0