Der vi - Editor und seine Handhabung


Writer: posidron
Contact:
posidron@mail.com

Date: 14.10.2002

© Copyright 2002





Einleitung
Der vi - Editor ist ein oder besser der Standard Editor unter Unix und ist auf jeder Unix Plattform verfügbar. Zwar ist dieser Editor etwas gewöhnungsbedürftig, dies gleicht sich aber in seiner Funktionalität und Umfang der Features wieder aus. Eine der grundlegenden Merkmalen zu anderen Unix Editoren wie z.B. ex und ed ist das er ein Full Screen Editor ist, und nicht wie die anderen ein reiner Zeileneditor. Er wurde von Bill Joy im Jahre 1976 geschrieben. Der Name vi steht für visual und wird "vee eye" ausgesprochen.

Dieser Text soll als kleine Einleitung in die Welt des vi's dienen. Natürlich wäre die eine oder andere Sache noch ergänzungswürdig, aber für den Einstieg und für den normalen Gebrauch sollte es durchaus hilfreich sein. Wenn man sich weiter und intensiver mit diesem Editor beschäftigen will, empfiehlt sich dieses Buch.


Die Struktur
Dieses Schaubild soll die Struktur des vi - Editors zeigen, mit seinen drei Ebenen. Die einzelnen Ebenen mit all seinen Befehlen werden weiter unten aufgelistet und erklärt.


Die grafik zeigt auch wie man sich durch die einzlenen Ebenen des vi - Editors bewegt, bzw. welche Befehle dazu gebraucht werden.


Los geht's
Man kann den vi - Editor auf viele Wege starten und benutzen, unten werden die gängigsten Methoden aufgelistet und beschrieben.

Der view Befehl veranlasst den vi - Editor eine Datei zum Lesen zu laden. Ist die Datei den Sie als Parameter angeben nicht vorhanden, wird diese Datei neu erstellt.

# view [Dateiname]

Der vi [Dateiname] Befehl ruft den vi - Editor auf, ggf. wird eine neue Datei angelegt oder eine bestehende geöffnet. Statt einer Datei, kann man auch mehrere Datei gleichzeitig aufrufen. Dies geschieht indem man die Dateinamen als Parameter bei Start von vi nacheinander durch ein Leerzeichen mit angibt.

# vi [Dateiname]

oder

# vi [Datei1] [Datei2] ...

Der vi Befehl ruft den vi - Editor auf und öffnet dabei ein neues Dokument. Bei jedem Start des Editors, wechselt der vi in eine der drei Ebenen, in den Kommandomodus oder auch Befehlsmodus genannt.

# vi

Wie man sich durch die einzelnen Ebenen des vi - Editors bewegt kann man aus der oben gezeigten Grafik entnehmen.


Der Befehlszeilenmodus
Der Befehlszeilenmodus auch Last Line Modus genannt, der sich die Eingabeaufforderung für einen Befehl in der letzten Zeile des Bildschirm befindet.
Die einzelnen Befehle dieses Modus nennt man auch ex Befehle. Im folgenden werden ein paar ex - Befehle erklärt die im Befehlszeilenmodus angewendet werden können. Wenn vi startet gelanngt man erst in den Kommandomodus(dazu später mehr...), wenn man von dort in den Befehlszeilenmodus wechseln möchte, gibt man einen Doppelpunkt an, nun wird sich in der unteren bzw. letzten Zeile des Bildschirmes auch ein Doppelpunkt befinden und nachstehend ihr Cursor. Jetzt kann man die folgend Befehle eingeben und anwenden. Will man aus diesem Modus wieder zurück in den Kommandomodus muss man entweder ESC - Escape drücken oder nach einem eingegebenen Befehl die Enter Taste, danach ist man dann automatisch wieder im Kommandomodus.


Befehl Erklärung
:w Text speichern
:w! Text speichern, Schreibschutz ignorieren
:wq Text speichern und vi beenden
[ESC] ZZ wie :wq
:x wie :wq
:w Datei Text unter angegebener Datei speichern
w >> Datei Text an die angegebene Datei anhängen
:q Abbrechen, ohne den Text zu speichern,
bei Änderungen im Text erfolgt eine Warnung und kein Abbruch.
:q! Editor verlassen ohne zu speichern.
:r Datei Text aus der angegebenen Datei nach der momentanen Zeile einfügen.
:e Datei Neue Datei bearbeiten (der Textpuffer wird überschrieben).
Ist die aktuelle Datei noch nicht gespeichert worden, erfolgt eine Warnung.
:e! Datei Neue Datei bearbeiten (der Textpuffer wird immer überschrieben).
:n Wechselt zur nächsten geladenen Datei (falls beim Aufruf mehr als eine Datei angegeben wurde).



Der Eingabemodus
Der Eingabemodus, in diesem Modus wird der Text eingeben. Der Eingabemodus wird aufgerufen indem man, wenn man im Kommandomodus einer der untenstehenden Befehle eingibt. wenn man wieder zurück in den Kommandomodus will, geschieht dies mit der eingabe von ESC Escape. Normalerweise hat der Eingabemodus keine eigenen Befehle, nur die in ihn verlinkt werden wie z.B. Änderungskommandos oder die unten stehenden. Er dient nur dazu den Text einzugeben. Die untenstehenden Befehle hätte man auch zu den Befehlen des Kommandomodus schreiben können, da sie in diesem eingegeben werden um zum Eingabmodus zu gelangen.

Befehl Erklärung
a Eingabe rechts vom Cursor (append).
A Eingabe am Zeilenende
i Engabe links vom Cursor (insert).
I Eingaben am Zeilenanfang
o Eingabe ab der aktuellen Zeile, d.h. in der folgenden Zeile, Spalte 1.
O Eingabe in der vorhergehenden Zeile, Spalte 1.



Der Kommandomodus
Der Kommandomodus, vom dem Komandomodus geht alles aus, von hier werden mit den verschiedenen Steuerbefehlen die einzelnen Ebenen angesprochen. Die Befehle die noch zum Kommandomodus gehören, sehen sie unten aufgelistet und erlärt was sie bewirken.



+ Blättern auf dem Bildschirm

Befehl Erklärung
CTRL-F Eine Bildschirmseite vorwärts
CTRL-B Eine Bildschirmseite rückwärts
CTRL-D Eine halbe Bildschirmseite vorwärts
CTRL-L Bildschirm neu aufbauen


+ Cursorpositionierung

Befehl Erklärung
h Zeichen links
l Zeichen rechts
k Spalte höher
j Spalte tiefer
b Wortanfang
e Wortende
w Anfang nächstes Wort
H Anfang erste Zeile des Bildschirms
L Anfang letzten Zeile des Bildschirms
0 (Null) Zeilenanfang
$ Zeilenende
RETURN Nächste Zeile
nG (Go) Gehe zu Zeile n. n ist eine Zeilennummer. Fehlt die Zahl, wird zur letzten Zeile der Datei gesprungen.
% Sucht zur aktuellen Klammer die korrespondierende öffnende bzw. schließende Klammer


+ Löschen von Text

Befehl Erklärung
x Zeichen unter dem Cursor löschen
X Zeichen vor dem Cursor löschen
dw Ab Cursorposition bis Wortende löschen
db Ab Cursorposition bis Wortanfang lö
[n] dd n ganze Zeilen löschen. Falls n fehlt, wird eine Zeile gelöscht.
D Ab Cursorposition bis Zeilenende löschen


+ Änderung des Textes
(Änderungskommandos wechseln in den Eingabmodus)

Befehl Erklärung
r Zeichen ersetzen
~ Wechsel Groß-/Kleinbuschstaben
R Mehrere Zeichen ersetzen (Abschluß mit ESC)
s Ein Zeichen ersetzen und zusätzliche Zeichen anschließend einfügen (Abschluß mit ESC)
cc Gesamte Zeile ändern (Abschluß mit ESC)
cw Wort ändern (Abschluß mit ESC)
C Ab Cursorposition bis Zeilenende ändern (Abschluß mit ESC)


+ Kopieren und Einfügen

Befehl Erklärung
yy Aktuelle Zeile kopieren
p Zeile vor dem Cusor einfügen
P Zeil nach dem Cursor einfügen
yyp Aktuelle Zeile duplizieren
ddp Zwei aufeinanderfolgende Zeilen vertauschen
xp Zwei aufeinanderfolgende Zeichen vertauschen
Mehrere Zeilen werden durch Voranstellen der Zeilenzahl vor "dd" oder "yy" in den Puffer gebracht.
b6yy kopiere die nächsten 6 Zeilen in Puffer b
bP Inhalt von Puffer b nach dem Cursor einfügen
byy Kopiere aktuelle Zeile nach Puffer b (Pufferbereich von a-z)


+ Suchen (Zeichen oder Strings)


Befehl Erklärung
fx Zeichen "x" in der momentanen Zeile suchen (vorwärts)
Fx Zeichen "x" in der momentanen Zeile suchen (rückwärts)
Die Suchkommandos müssen mit der Return Taste abgeschlossen werden.
/str String "str" vorwärts in der Datei suchen
?str String "str" rückwärts in der Datei suchen
// Letzten Suchbefehl wiederholen (vorwärts)
?? Letzten Suchbefehl wiederholen (rückwärts)


+ Sonstige Kommandos

Befehl Erklärung
. Letztes Kommando wiederholen
J Zeilen verbinden (nächste Zeile anhängen)
u Letzten Befehl rückgängig machen
U Aktuelle Zeile wiederherstellen
CTRL-g Zeilennummer und Dateiinfo zeigen
CTRL-v Nächstes Zeichen transparent eingeben (z. B. Steuerzeichen)
:! cmd Verläßt vi temporär und führt das Kommando cmd aus (ggf. Rückkehr mit exit).
:r! cmd Fügt die Ausgabe von cmd ab Cursorposition ein.
!! cmd Benutzt aktuelle Zeile als Eingabe für cmd und ersetzt durch dessen Ausgabe.


# EOF