[Next] [Previous] [Top]

UNIX-Lehrtext

Anhang: Vi Referenz-Karte


1. Masseinheiten
2. Starten und Verlassen von vi
3. Bewegen
4. Einfügen von Text
5. Löschen
6. Aendern
7. Suchen nach Ausdrücken
8. Ersetzen von Ausdrücken
9. Merken von Text
10. Wiedereinfügen von Text
11. Markieren
12. Shell-Befehle
13. Verschiedene Kommandos

1. Masseinheiten

Kommandos im Kommandomodus sind oft mit Masseinheiten verbunden, die angeben, in welchem Bereich das Kommando wirksam sein soll. Hier erläutern wir die verschiedenen Begriffe für Masseiheiten in vi.

Buchstabe
jeder Buchstabe einschliesslich Leerzeichen, TAB, Satzzeichen und Kontrollzeichen
Wort
mehrere Buchstaben, die an beiden Seiten durch ein oder mehrere Satzzeichen, Leerzeichen, TABs, Ziffern oder Zeilenumbrüche begrenzt werden. Eine Gruppe von Satzzeichen ist ein Wort.
leer begrenztes Wort
im Unterschied zum Wort gehören angrenzende Satzzeichen zum leer begrenzten Wort dazu, d.h. es wird durch sogenannten Leerraum (Whitespace), also Leerzeichen, TAB oder Zeilenumbrüche, begrenzt.
Zeile
Ansammlung von Zeichen, die durch einen Zeilenumbruch begrenzt werden. Eine logische Zeile ist nicht unbedingt mit einer Zeile am Bildschirm identisch. Wurde am Zeilenende kein RETURN eingegeben, so setzt vi die logische Zeile fort. Manche Konfigurationen von vi trennen logische Zeilen automatisch in Bildschirmzeilen.
Satz
eine Ansammlung von Zeichen, die durch einen Punkt oder ein Ausrufezeichen gefolgt von zwei (!) Leerzeichen oder einem Zeilenumbruch begrenzt wird.
Absatz
Ansammlung von Zeichen, der mindestens eine Leerzeile folgt.
Wird vor einer Masseinheit eine Zahl angegeben, so wird diese Zahl als Wiederholungsfaktor für die Masseinheit interpretiert.

2. Starten und Verlassen von vi

vi
startet vi ohne eine zu editierende Datei
vi filename
editiere die Datei filename
vi -r filename
restauriere die Datei filename nach einem Systemabsturz
:wq
Abspeichern der Aenderungen und Verlassen von vi
ZZ
Abspeichern der Aenderungen und Verlassen von vi
:q!
Wegwerfen der Aenderungen und Verlassen von vi

3. Bewegen

Denken Sie daran, dass Sie sich im Kommandomodus befinden müssen, um den Cursor mithilfe der folgenden Kommandos bewegen zu können. Diese Kommandos legen auch Masseinheiten fest, die zusammen mit anderen Kommandos verwendet werden können. Jedes Kommando kann durch Voranstellen einer Zahl mehrfach ausgeführt werden.

Beachten Sie, dass sich die Tasten h, j, k, l, die in vi die Bedeutung von Cursortasten haben, direkt unter Ihren Fingern befinden.

h
ein Buchstabe nach links
j
eine Zeile nach unten
SPACE, l
ein Buchstabe nach rechts
k
eine Zeile nach oben
w
ein Wort nach rechts
W
ein leer begrenztes Wort nach rechts
b
Wort nach links
B
leer begrenztes Wort nach links
e
Ende des Wortes rechts
E
Ende des leer begrenzten Wortes rechts
0
Zeilenanfang (kann nicht mit einem Wiederholungsfaktor versehen werden)
RETURN
Anfang der nächsten Zeile
-
Anfang der vorhergehenden Zeile
$
Zeilenende
(
Satzanfang
)
Satzende
{
Absatzanfang
}
Absatzende
nG
zu Zeile n (ohne n zur letzten Zeile)
H
zum Bildschirm-Beginn
M
zur Bildschirm-Mitte
L
zum Bildschirm-Ende
Die nächsten Kommandos bewegen den Cursor um grössere Strecken. Diese Kommandos können nicht als Masseinheiten verwendet werden. Zur Erinnerung: "C-x" bedeutet, dass die Ctrl-Taste gleichzeitig mit der Taste x gedrückt werden muss.

C-d
eine halbe Bildschirmseite nach unten
C-u
eine halbe Bildschirmseite nach oben
C-f
eine Bildschirmseite vorblättern
C-b
eine Bildschirmseite zurückblättern

4. Einfügen von Text

Mit den folgenden Kommandos bleibt man solange im Eingabemodus, bis durch Tippen von ESC in den Kommandomodus gewechselt wird.

Folgende Kommandos fügen Text ein:

i
vor dem Cursor
I
vor dem ersten nichtleeren Zeichen der Zeile
a
an der aktuellen Cursorposition
A
am Ende der Zeile
o
öffne Zeile unterhalb der aktuellen Zeile
O
öffne Zeile oberhalb der aktuellen Zeile

5. Löschen

In diesem und den folgenden Abschnitten steht M für eine Masseinheit (siehe 1. Kapitel, Seite 64), der ein Wiederholungsfaktor n vorausgehen kann. Beachten Sie, dass d gefolgt von RETURN zwei Zeilen löscht, nämlich die aktuelle Zeile sowie die folgende. Um nur die aktuelle Zeile zu löschen, verwende man dd.

nx
lösche n Buchstaben beginnend beim aktuellen
nX
lösche n Buchstaben vor dem aktuellen
dM
lösche den durch M bezeichneten Text
ndd
lösche n Zeilen
D
lösche bis zum Zeilenende
Beispiele:

d0
lösche bis zum Zeilenanfang
dW
lösche bis zum Ende des leer begrenzten Wortes
5dd
lösche 5 Zeilen beginnend mit der aktuellen
dG
lösche bis zum Ende der Datei
d1G
lösche bis zum Anfang der Datei

6. Aendern

Bei Eingabe der ersten vier Kommandos der folgenden Liste erscheint am Ende der angegebenen Masseinheit ein $-Zeichen. Alles vom Cursor bis zu diesem $ wird durch Ihre Eingabe ersetzt, bis Sie ESC tippen, um in den Kommandomodus zurückzukehren. Falls Sie bei der Eingabe über das $-Zeichen hinaus tippen, so wird vi diese Zeichen einfügen und somit den Text nach dem $-Zeichen nicht mehr überschreiben.

ns
ersetze n Buchstaben
cM
ändere durch M spezifizierten Text
ncc
ändere n Zeilen
C
ändere bis zum Ende der Zeile
nrc
ersetze n Buchstaben durch den einzelnen Buchstaben c
(kehrt in Kommandomodus zurück)
R
ersetze (überschreibe) Text, bis ESC getippt wird

7. Suchen nach Ausdrücken

Im folgenden ist regexp ein regulärer Ausdruck (siehe Anhang hinten, Seite 70), der eine einfache Buchstabenreihe sein kann.

/regex RETURN
vorwärts nach regex suchen
?regex RETURN
rückwärts nach regex suchen
n
wiederhole ursprüngliche Suche in derselben Richtung
N
wiederhole ursprüngliche Suche in entgegengesetzter Richtung
/RETURN
wiederhole ursprüngliche Suche vorwärts
?RETURN
wiederhole ursprüngliche Suche rückwärts

8. Ersetzen von Ausdrücken

Ein Ersetzungskommando hat folgende Syntax:

:[Adresse]s/Such-Ausdruck/Ersetzungs-Ausdruck/g
Adresse
besteht aus zwei Zeilennummern, die durch ein Komma getrennt sind. Die Zeilennummern können durch einen Punkt für die aktuelle Zeile, ein $ für die letzte Zeile oder durch eine Marke (siehe Abschnitt 11, Seite 68) ersetzt werden.
Ersetzungs-Ausdruck
ein regulärer Ausdruck, der eine einfache Buchstabenreihe sein kann
g
steht für globales Ersetzen; ohne das g wird nur die erste mögliche Ersetzung in jeder Zeile durchgeführt.

9. Merken von Text

In vi steht "yank" für "merken, aber nicht löschen" (also ganz anders als im Emacs, wo "yank" für die Wiedergabe einer gekillten Sequenz steht!). Wir verwenden hier einfach den Ausdruck "merken". Derartig gemerkter Text kann irgendwo anders in der Datei wiedereingesetzt werden. Um gemerkten Text für spätere Zwecke aufzubewahren, kann man einen benannten Puffer verwenden. Dazu wird dem Merk-Kommando einfach ein "x vorangestellt, wobei x der Puffername (ein Buchstabe von a bis z) ist.

yM
merke durch M angegebenen Text
nyy
merke n Zeilen
Y
merke bis zum Zeilenende

10. Wiedereinfügen von Text

Nachdem Text gelöscht oder gemerkt wurde, kann er in der Datei wieder eingefügt werden ("put"). Falls kein Puffer als Zwischenspeicher angegeben wurde, so dürfen zwischen dem Löschen bzw. Merken und dem Wiedereinfügen nur Cursorbewegungen stattfinden. Um Text aus dem Puffer x wieder einzufügen, wird dem Kommando "x vorangestellt.

P
Wiedereinfügen des Textes vor dem Cursor
p
Wiedereinfügen des Textes nach dem Cursor

11. Markieren

mx
setze Marke x, wobei x ein Buchstabe von a bis z ist
'x
gehe mit dem Cursor an den Anfang der Zeile mit Marke x
`x
gehe mit dem Cursor zur Marke x
''
gehe mit dem Cursor zur vorigen Position

12. Shell-Befehle

:sh
starte eine Subshell; in den Editor zurück kommt man mit C-d oder exit
:!Kommando
starte Shell und führe Kommando aus
!!Kommando
starte Shell, führe Kommando aus und ersetze die aktuelle Zeile der editierten Datei mit der Ausgabe von Kommando
:r!Kommando
füge die Ausgabe von Kommando an der aktuellen Cursorpostion der editierten Datei ein

13. Verschiedene Kommandos

u
mache letzte Aenderung rückgängig; funktioniert aber nur einmal
J
verbinde die aktuelle mit der folgenden Zeile
.
wiederhole das letzte verändernde Kommando
:w Datei
schreibe Aenderungen nach Datei (die aktuelle Datei, falls keine Datei abgegeben wurde)
:e Datei
editiere Datei; erst mit :w die Aenderungen am aktuellen File abspeichern, bevor das neue eingelesen wird!
:f
zeige Name und Status des aktuellen Files an
:r Datei
füge Datei an der aktuellen Cursorposition ein
C-g
zeige Dateiname, aktuelle Zeilennummer, Gesamtzeilenzahl und den Prozentsatz der Datei, der sich vor dem Cursor befindet
C-v
füge nächsten Buchstaben "wörtlich" ein. Das wird im Eingabemodus zur Eingabe von Kontrollzeichen u.ä. verwendet
~
ändere Klein- zu Grossschreibung und umgekehrt

UNIX-Lehrtext - 23 SEP 94
[Next] [Previous] [Top]

Generated with WebMaker