Aktionen

Vi

Aus exmediawiki

vi ist ein visueller Texteditor und besitzt drei grundsätzlich unterschiedliche Arbeitsmodi: Den Befehlsmodus, den Einfügemodus und den Kommandozeilenmodus.

Unter Ubuntu und OS X ist vi schon vorinstalliert. Der Nachfolger vim lässt sich etwas einfacher bedienen.


Befehlsmodus "Esc"

Beim Start von vi befindet man sich im Befehlsmodus. Dort können durch das Drücken verschiedener Tasten einfache Befehle ausgeführt werden, wie z. B. „Wort suchen“, „Zeile löschen“ usw.

Durch Drücken von Esc gelangt man aus anderen Modi in diesen Befehlsmodus zurück. In den neueren Versionen von vi wird der jeweilige Modus unten angezeigt.

Im Dokument bewegen

Neben den Cursor-Pfeiltasten sind u.a. folgende Befehle hilfreich um sich schnell im Dokument zu bewegen:

w    Zum nächsten Wort springen
b    Zum vorherigen Wort bzw. Wortanfang springen
e    An das Ende des Worts springen
(    Einen Satz zurück
)    Einen Satz weiter
0    An den Zeilenanfang
$    An das Zeilenende
G    Zur letzten Zeile des Dokuments springen
1G   Zur ersten Zeile des Dokuments springen
gg   Zur ersten Zeile des Dokuments springen (siehe 1G)
H    oberste Zeile des Bildschirms
M    mittlere Zeile des Bildschirms
L    untere Zeile des Bildschirms

Einfügen

Durch Drücken der folgenden Tasten gelangt man vom Befehlsmodus in den Einfügemodus

i    Text vor dem Cursor einfügen
I    Text vor der Zeile einfügen
a    Text nach dem Cursor einfügen
A    Text nach der Zeile einfügen
o    Eine neue Zeile nach der aktuellen Zeile einfügen
O    Eine neue Zeile vor der aktuellen Zeile einfügen
r    Ein Zeichen ersetzen
R    Viele Zeichen ersetzen

Markieren, Kopieren und Einfügen

V    Zeile markieren
v    Zeichen markieren
ggVG den gesamten Inhalt markieren
v4   4 Zeilen markieren
y    markierten Bereich in die Zwischenablage legen
P    Zwischenablage vor aktueller Zeile einfügen
p    Zwischenablage nach aktueller Zeile einfügen

Löschen

x    Zeichen löschen
5x   5 Zeichen löschen
X    Zeichen links des Cursors löschen
D    Rest der Zeile ab dem Cursor löschen
d0   Rest der Zeile vor dem Cursor löschen
dd   Aktuelle Zeile löschen
3dd  Aktuelle Zeile + 2 darauffolgenden Zeilen löschen
dw   Wort löschen

Rückgängig

u    (undo) Letzte Änderung rückgängig machen
U    (undo) Alle Änderungen in der Zeile rückgängig machen

Suchen

/ string nach einem string suchen (vorwärts)
? string nach einem string suchen (rückwärts)
n        nach einem weiteren Treffer für string suchen
N        nach einem vorherigen Treffer für string suchen

Suchen und Ersetzen

:s/Suchmuster/string/flag Ersetze das Suchmuster durch string, entsprechend des gewählten flags.
g                         (flag) Alle Treffer ersetzen
c                         (flag) Ersetzen der treffer muss bestätigt werden
&                         letzten :s-Befehl wiederholen

z.B.:

:s/alt/neu   sucht und ersetzt alt durch neu
:s/alt/neu/g sucht und ersetzt alle alt durch neu in der aktuellen Zeile
:%s/alt/neu  ersetzt im gesamten Dokument

Einfügemodi

In den Einfügemodi ist die eigentliche Eingabe von Text möglich.

i (insert) Eingabe vor dem aktuellen Zeichen.
a (append) Eingabe nach dem aktuellen Zeichen.
I (Insert) Eingabe am Anfang der aktuellen Zeile.
A (Append) Eingabe am Ende der aktuellen Zeile.

Kommandozeilenmodus

Durch Eingabe von : (Doppelpunkt) gelangt man vom Befehlsmodus in den Kommandozeilenmodus. Dort können komplexere Befehle wie etwa zum Suchen und Ersetzen von Text ausgeführt werden.

Öffnen und Speichern

:w file In Datei speichern
:r file Datei nach Zeile einfügen
:n Zur nächsten Datei springen
:p Zur vorherigen Datei springen
:e file Datei bearbeiten

Drucken

:!lp                                           druckt auf dem Defaultprinter des Systems
:!lp [-d Druckername]                          druckt auf angegebenem Drucker
:!lp [-d Druckername] [Pfad/Dateiname]         druckt eine andere Datei

vi beenden

:x    Beenden, Änderungen speichern
:wq   Beenden, Änderungen speichern
ZZ    dasselb wie :wq
:q    Beenden, wenn es keine Änderungen gab
:q!   Beenden, Änderungen ignorieren
:next Die nächste Datei wird geladen, falls vi mit mehreren Dateien aufgerufen wurde.
:prev Die vorherige Datei wird geladen, falls vi mit mehreren Dateien aufgerufen wurde.