25.4 vi – Der klassische Editor 

Es gibt zwei klassische Editoren, die jeweils eine lange Tradition unter Unix haben. Dies sind
1. | der emacs und |
2. | der vi. |
Emacs oder vi?
Über Emacs gibt es zahlreiche Literatur, die Sie im Internet finden k"onnen. Sie sollten mindestens einen »gro"sen« Editor beherrschen, da Sie diesen immer dann brauchen, wenn Sie keine grafische Oberfl"ache zur Verfügung haben. Ich möchte Ihnen im Folgenden den Editor vi vorstellen und hoffentlich näherbringen. vi ist auf nahezu jedem UNIX-System vorinstalliert, lässt sich ohne Cursor-Tasten bedienen und ist sehr schnell. vi gibt es auch mit grafischer Oberfläche (vim und gvim). Bei unseren weiteren Betrachtungen lassen wir diese Varianten aber au"sen vor.
Starten lässt sich der Editor mit dem Befehl vi. Der Befehl vi test.txt öffnet die Datei test.txt im aktuellen Verzeichnis oder legt sie an, falls sie noch nicht existiert.
Kommando | Bedeutung |
i |
einfügen links vom Cursor |
I |
einfügen am Zeilenanfang |
a |
einfügen rechts vom Cursor |
A |
einfügen am Zeilenende |
o |
neue Zeile hinter der aktuellen einfügen |
O |
neue Zeile vor der aktuellen einfügen |
rc |
ein Zeichen unter dem Cursor durch c ersetzen |
R |
überschreiben ab Cursor-Position |
sText |
ein Zeichen durch Text ersetzen |
SText |
eine ganze Zeile durch Text ersetzen |
nsText |
ein Zeichen durch Text ersetzen |
cwText |
ein Wort durch Text ersetzen |
cc |
überschreiben bis zur nächsten Zeilengrenze |
dd |
aktuelle Zeile löschen |
4dd |
ab aktueller Zeile vier Zeilen löschen |
:q |
verlassen, ohne zu speichern |
:q! |
verlassen, ohne zu speichern, auch bei modifiziertem Dokument |
:wq |
Puffer schreiben und verlassen |
:wn |
Puffer schreiben und das nächste Dokument laden |
yy |
die aktuelle Zeile in einen Puffer schreiben |
ny |
n+1 Zeilen in einen Puffer kopieren |
yw |
ein Wort rechts vom Cursor in den Puffer kopieren |
yb |
ein Wort links vom Cursor in den Puffer kopieren |
muster |
nach muster vorwärts im Text suchen |
/ |
die Suche vorwärts wiederholen |
?muster |
nach muster rückwärts im Text suchen |
? |
die Suche rückwärts wiederholen |
n |
das letzte Suchkommando wiederholen |
:s/alt/neu |
Sucht und ersetzt alt durch neu (nur das erste Auftreten in aktueller Zeile). |
:s/alt/neu/g |
Sucht und ersetzt alle alt durch neu in aktueller Zeile. |
:1,$s/alt/neu |
ersetzen im gesamten Dokument |
:%s/alt/neu |
ersetzen im gesamten Dokument |
w |
Cursor um ein Wort vorwärts bewegen |
3w |
Cursor um drei Wörter vorwärts bewegen |
b |
Cursor um ein Wort rückwärts bewegen |
$ |
mit dem Cursor zum Zeilenende springen |
0 |
mit dem Cursor zum Zeilenanfang springen |
G |
mit dem Cursor zur letzten Zeile springen |
9G |
mit dem Cursor zur Zeile 9 springen |
Sie können auch die Cursor-Tasten verwenden sowie die Tasten (Entf) , (Pos1) und (Ende) . Das Kopieren von Text erfolgt nach einem einfachen Schema:
1. | Text in einen Puffer kopieren |
2. | Text aus Puffer einfügen |
Im richtigen Modus arbeiten
Der Editor vi besitzt mehrere Modi, zwischen denen Sie wechseln müssen, um z. B. ein Dokument zu schreiben. Diese Trennung verschiedener Ebenen hat u. a. sicherheitstechnische Gr"unde:
- Befehlsmodus
Der Editor startet im Befehlsmodus. Hier können Sie Befehle eingeben, um einen Text zu bearbeiten. Es ist Ihnen hier allerdings nicht möglich, Text einzugeben.
- Eingabemodus
Wenn Sie einen Text schreiben möchten, dann müssen Sie in den Eingabemodus wechseln. Dies geschieht durch Drücken der Taste (I) .
- Kommandomodus
Mit der Taste (Esc) wechseln Sie in den Kommandomodus. Vor jedem Kommando muss ein Doppelpunkt gesetzt werden, z. B. zum Speichern :w oder zum Suchen eines Strings :/SUCHSTRING. Allerdings k"onnen Sie in diesem Modus keine Eingaben und Ver"anderungen am eigentlichen Text vornehmen. Hierzu m"ussen Sie wie oben beschrieben wieder durch Dr"ucken von (I) in den Eingabemodus wechseln.