Der Editor "vi"
Der Editor "vi" ist ein unter allen UNIX-Systemen übliches Systemwerkzeug. Wegen seiner hohen Verbreitung stellt er ein "Standardtool" dar.
Gerade von "Anfängern" wird die Bedienung häufig als kompliziert und unergonomisch angesehen. Tatsächlich ist der "vi" schon recht lange in seinem jetzigen Leistungsumfang. Speziell für Leute die "auf der Tastur sehr schnell" sind und keine Maus brauchen (also Softwareentwickler, Systemverwalter und Freaks) ist der "vi" als äußerst leistungsfähiges Werkzeug bekannt. Seine Verarbeitungsmöglichkeiten von reinen Textdateien ist mit modernen Programmen vergleichbar. Es erfordert jedoch etas Übung !
Unter LINUX ist der "vi" ein "Clone" namens "vim"
Aufruf: vi [unix:Optionen] <Datei[unix:en]>
Im Editor vi sind grundsätzlich drei Betriebsmodi möglich.
- Bearbeitungs- oder Eingabemodus: Es kann Text eingegeben werden. Beendigung mit <ESC>
- Kommandomodus: Wird beim Aufruf des vi automatisch gewählt, oder mit <ESC> eingeschaltet. Auf die geladene Datei können Befehle wie z.B. löschen von Zeilen, Einfügen etc. abgegeben werden.
- ExModus: aus dem Kommandomodus wird durch ":" in den ExModus gewechselt. Befehle z.B. Datei lesen, schreiben, verlassen etc.
- Gebräuchliche Optionen sind "-r" für die Wiederherstellung von Dateien nach Systemausfällen und "-R" für das schreibgeschützte öffnen einer Datei. (:w! schreibt sie doch!)
Befehle im Kommandomodus:
Eingabe |
Wirkung |
---|---|
i |
Text einfügen an der aktuellen Cursorposition |
a |
Text anfügen nach der aktuellen Cursorposition |
I |
wie "i", am Zeilenanfang |
A |
wie "a", am Zeilenende |
0 |
Cursor zum Zeilenanfang |
$ |
Cursor zum Zeilenende |
b |
zum vorherigen Wortanfang. |
e |
zum nächsten Wortende vorwärts. |
( oder ) |
Satzanfang rückwärts oder vorwärts. |
G |
Cursor wird zum Dokumentende bewegt (Anfang der letzten Zeile) mit vorgestellter Zeilennummer wird zur angegebenen Zeilennummer gewechselt. |
x |
löscht das aktuelle Zeichen |
X |
löscht das Zeichen vor der aktuellen Cursorposition |
dd |
löscht die aktuelle Zeile |
d$ oder D |
löscht ab aktueller Cursorposition bis Zeilenende |
dG |
löscht ab aktueller Zeile bis Dokumentende |
d0 |
löscht ab aktueller Cursorposition bis Zeilenanfang |
dw |
löscht den Rest des aktuellen Wortes. |
cw |
Ersetzt den Rest des aktuellen Wortes durch die folgende Eingabe bis "ESC". |
r |
Ersetzt das aktuelle Zeichen durch das eingegebene Zeichen. |
R |
"Überschreibmodus". Ersetzt den vorhandenen Text durch die Eingabe bis "ESC" |
Y oder yy |
kopiert die aktuelle Zeile in die Zwischenablage. Durch "<Name>Y wird in eine benannte Zwischenablage kopiert. |
p |
fügt aus der Zwischenablage nach der aktuellen Zeile ein. Durch "<Name>p wird aus der benannten Zwischenablage eingefügt. |
P |
wie vor, jedoch vor der aktuellen Zeile ein. |
o |
Fügt eine neue Zeile oberhalb der aktuellen Zeile ein. |
O |
Fügt eine neue Zeile unterhalb der aktuellen Zeile ein. |
J |
Verbindet die aktuelle Zeile mit der nächsten Zeile. |
. |
letztes Kommando wiederholen |
u |
letzten Befehl rückgängig machen |
^D |
Seitenweise nach unten. |
^B |
Seitenweise noch oben. |
/Muster |
Sucht ab der aktuellen Cursorposition in Richtung Dateiende nach dem Muster. Nach erreichen des Dateiendes wird am Anfang der Datei weiter gesucht. Durch / oder "n" ohne Suchmuster wird weiter gesucht. |
?Muster |
Sucht in Richtung Dateianfang. Durch ? oder "N" ohne Suchmuster wird weiter gesucht. |
Die meisten dieser Kommandos können durch vorangestellte numerische Werte mehrfach ausgeführt werden.
Beispiel: 25dd #löscht 25 Zeilen ab der aktuellen Cursorposition.
Exkommandos :
Kommando |
|
:w |
aktuelle Datei schreiben (optional neuer Dateiname). Als Benutzer "root" kann mit :w! eine Datei trotz fehlender Schreibberechtigung überschrieben werden. |
:e |
Datei zu editieren einlesen: |
:n |
die nächste Datei aus der Parameterliste laden |
:rew |
"Rewind", am Anfang der Dateiliste wieder beginnen. |
:args |
Argumentenliste anzeigen |
:q |
Verlassen. (:q! ohne jegliche Nachfrage) |
:x |
Speichern und beenden (oder :wq , oder ZZ) |
:r <datei> |
fügt die Datei an die aktuelle Cursorposition ein. |
:set all |
Zeigt eine Liste der Einstellmöglichkeiten. Mit "set Variable=Wert" können Einstellungsmöglichkeiten geändert werden. z.B. "set number" schaltet die Zeilennumerierung ein. |
:!<Shellkommando> |
Führt das Shellkommando aus und kehrt danach in den vi zurück. Die Datei muß vorher gespeichert werden. |
Bestimmte Befehle können durch eine Bereichsangabe auf einzelne Dateibereiche begrenzt werden.
:<pos-start>,<pos-ende><Befehl><optionen> Beispiele:
:2,5w datei2 |
Schreibt die Zeilen 2 bis 5 in die neue Datei "datei2" |
:1,$s/alt/neu/g |
Ersetzt in der gesamten Datei die Zeichenkette "alt" gegen "neu" ohne Nachfrage. Durch die Option gc (statt g) erfolgt in jedem Fall eine Benutzerfrage. |
Die Einstellungen des "vi" können entweder in der Datei $HOME/.exrc oder in der Umgebungsvariable $EXINIT gespeichert werden.