Der Unix-Standard-Editor vi ist nach der Installation
des Basissystems auf jedem
Debian GNU/Linux-System verfügbar. vi wird schon seit vielen
Jahren auf Unix-Systemen eingesetzt, seine für Anfänger kryptische
Bedienung rührt aus der langen Geschichte dieses Editors her. In der
Urzeit der Computertechnik standen keine aufwendigen grafischen
Arbeitsplätze zur Verfügung. Textdrucker mit Tastatur oder – etwas
moderner – Text-Terminals (
VT100, ein Modell der Firma DEC, ist noch
heute ein Begriff), die seriell an der Rechner angeschlossen wurden,
waren Stand der Technik.
Trotzdem ist es sinnvoll, ein paar wenige Grundlagen über den vi
zu erfahren. Dieser Editor ist einfach immer verfügbar, auch auf einem
minimalem System. Wenn Sie sich etwas in den vi eingearbeitet
haben, werfen Sie mal einen Blick auf vim,
vi improved, der eine
erweiterte Version des vi ist.
Beim vi wird zwischen einem Kommando- und einem Eingabemodus
unterschieden. Durch Drücken der Taste i für „Input“ kommen
Sie in den Eingabemodus. Ein Druck auf die Taste Esc beendet den Eingabemodus
und man befindet sich wieder im Kommandomodus. Zum Eingabemodus gibt es
nicht viel zu sagen, es können damit weitere Zeichen in die Datei
eingegeben werden.
Interessanter ist der Kommando-Modus des vi. Mit einzelnen
Tasten können Sie im Text navigieren oder auch Zeichen/Zeilen löschen.
Laden Sie einfach eine Datei, beispielsweise mit dem Kommando:
cp /etc/hosts . (legt eine Kopie der Datei im aktuellen Verzeichnis
ab),
vi ./hosts (startet vi und lädt die Datei).
In dieser Datei befinden sich die lokalen
Zuordnungen des Rechnernamens zur IP-Nummer. Nach dem Start des vi
befinden Sie sich im Kommandomodus. Sie können nun ein einzelnes Zeichen
löschen, indem Sie die Taste x drücken. Ein solcher Befehl kann
mit der Taste u rückgängig gemacht werden.
Um den Cursor im Text zu bewegen, können Sie die Pfeiltasten benutzen.
Sollte dies aufgrund fehlerhafter Einstellungen (zum Beispiel über eine
telnet-Verbindung) einmal nicht funktionieren, können Sie in jedem
Fall mit den Tasten h (links), j (runter),
k (rauf) und l (rechts) navigieren.
Viele der vi-Kommandos lassen sich auch „vervielfältigen“.
Beispielsweise löscht 9x 9 Zeichen ab der aktuellen Position.
Dies funktioniert mit den meisten anderen Kommandos ebenso.
Wenn Sie die Änderungen in einer Datei speichern wollen, können Sie
dies mit :w tun. Dateien unter einem anderen Namen speichern
Sie mit :w neu.txt. Sie können den vi beenden, indem
Sie :q eingeben. Auch hier sind Kombinationen möglich,
so können Sie eine Datei mit :wq speichern und den Editor
verlassen.
Häufig möchte man Zeilen kopieren: hierzu
dient der Befehl yy.
Dieser speichert die aktuelle Zeile in einem Puffer, die gespeicherten
Daten lassen sich mit p wieder
an einer anderen Stelle einfügen.
Analog dazu lassen sich mit 7yy
7 Zeilen kopieren... und so
weiter.
Soweit zu den Grundzügen des Editors vi. Mit diesen wenigen
Kommandos sind Sie in der Lage, Anpassungen an den Konfigurationsdateien
Ihres
Debian GNU/Linux-Systems vorzunehmen.
Wenn Sie sich eine Zeit lang mit diesem Editor beschäftigt haben, können Sie
folgende Liste verwenden um ihr vi-Know-How zu vertiefen.
Bereits beim Programstart können einige Optionen angegeben werden, diese sind
unter anderem:
vi name - Startet den Editor und lädt
die Datei name.
vi name1 name2 name3 - Startet den Editor und lädt
die Dateien name1,name2 und name1.
vi -R name - Startet den Editor und lädt
die Datei name im Nur-Lese Modus.
vi -r name - Startet den Editor und
restauriert die Datei name nach einem Absturz.
Wenn der Editor gestartet ist können einige Einstellungen verändert werden.
Sollen diese Änderungen dauerhaft gespeichert werden, so können diese in die
Datei ~/.vimrc eingetragen werden.
:set - zeigt die aktuellen Benutzereinstellungen.
:set all - zeigt alle Einstellungen.
:set option - Aktiviert eine Option.
Beispiel: set number Aktiviert die Anzeige der
Zeilennummern.
:set nooption - Deaktiviert eine Option.
Beispiel: set nonumber Deaktiviert die Anzeige der
Zeilennummern.
:set option? - Zeigt die möglichen Werte
dieser Option.
ZZ - Speichert die Datei und beendet das Programm.
:wq - Speichert die Datei und beendet das Programm.
:w - Speichert die Datei.
:w! - Speichert die Datei auch wenn de
Zugriffsrechte auf Nur-Lesen gesetzt sind.
:w name - Speichert die Datei unter dem Namen name.
:q - Beendet das Programm.
:q! - Beendet das Programm, Änderungen
werden verworfen.
:e name - Lädt die Datei name.
:e! name - Lädt die Datei name erneut und verwirft alle bisherigen Änderungen.
:e + name - Lädt die Datei name und springt ans Ende der Datei.
:e +n name - Lädt die Datei name und springt in die Zeile n.
:n - Geht zur nächsten der geladenen
Dateien.
:args - Listet die aktuelle Liste der
Dateien.
:rew - Springt zur ersten Datei in der
Dateiliste.
:f - zeigt den Namen der aktuellen
Datei und die aktuelle Zeilennummer an.
:q - Beendet das Programm.
:q - Beendet das Programm.
:q - Beendet das Programm.
:q - Beendet das Programm.
Pfeiltasten - Mit den Pfeiltasten kann der Cursor wie in anderen Anwendungen bewegt werden.
CTRL - d - Springt eine halbe Seite nach
unten.
CTRL - u - Springt eine halbe Seite nach
oben.
CTRL - f - Springt eine Seite nach unten.
CTRL - b - Springt eine Seite nach oben.
:0 - Springt zum Anfang der Datei.
:n - Springt zur Zeile
n der Datei.
:$ - Springt zum Ende der Datei.
0 - Springt zum Anfang der Zeile.
^ - Springt zum ersten Zeichen welches
kein Leerzeichen ist.
$ - Springt zum Ende der Zeile.
RETURN - Springt zum Anfang der nächsten Zeile.
% - Zeigt die zugehörige Klammer.
G - Springt zu letzten Zeile.
H - Springt zu erste Zeile im aktuellen
Fenster.
L - Springt zu letzten Zeile im aktuellen Fenster.
M - Springt in die Mitte des aktuellen Fensters.
- - Springt zum ersten Nicht-Leerzeichen
der vorhergehenden Zeile.
+ - Springt zum ersten Nicht-Leerzeichen
der nächsten Zeile.
j - Springt zur nächsten Zeile, in der
gleichen Spalte.
k - Springt zur vorhergehenden Zeile, in der
gleichen Spalte.
h - ein Zeichen nach rechts.
l - ein Zeichen nach links.
w - ein Wort vorwärts.
b - ein Wort rückwärts.
e - zum Ende des Wortes.
) - zum nächsten Satz.
( - zum vorhergehenden Satz.
} - zum nächsten Absatz.
{ - zum vorhergehenden Absatz.
x - Löscht das Zeichen unter dem Cursor.
X - Löscht das Zeichen vor dem Cursor.
D - Löscht alles bis zum Ende der Zeile.
^d - Löscht alles bis zum Anfang der Zeile.
dd - Löscht die gesamte Zeile.
ndd - Löscht n Zeilen.
dnw - Löscht n Wörter ab der Cursorposition.
i - aktiviert den Eingabemodus vor dem Cursor.
I - aktiviert den Eingabemodus vor dem
ersten Nicht-Leerzeichen.
a - aktiviert den Eingabemodus nach dem Cursor.
A - aktiviert den Eingabemodus nach dem
Ende der Zeile.
o - beginnt eine neue Zeile nach der
aktuellen Zeile und aktiviert den Eingabemodus.
O - beginnt eine neue Zeile über der
aktuellen Zeile und aktiviert den Eingabemodus.
rn - ersetzt das Zeichen unter dem Cursor
durch das Zeichen n, der Eingabemodus wird nicht aktiviert.
R - aktiviert den Eingabemodus, Zeichen
werden überschrieben.
C - Ändert den Text bis zum Zeilenende.
D - Löscht den Text bis zum Zeilenende.
s - ersetzt Zeichen.
S - ersetzt Zeilen.
J - ersetzt Zeilen.
y - kopiert die aktuelle Zeile.
nyy - kopiert n Zeilen.
p - fügt die kopierten Zeilen nach der
aktuellen Zeile ein.
P - fügt die kopierten Zeilen vor der
aktuellen Zeile ein.
Auch gelöschte Zeilen können mit den aufgeführten Kommandos eingefügt werden.
/text - sucht vorwärts nach text.
?text - sucht rückwärts nach text.
n - sucht nochmal in der gleichen Richtung.
N - sucht nochmal in der umgekehrten Richtung.
[ addr ] s/from/to/ [ g ] - ersetzt
einmalig from durch to. Mit addr
kann ein Bereich angegeben werden in dem die Aktion durchgeführt werden soll.
Die Zeilennummern sind durch ein Komma zu trennen. g führt die Aktion
an jeder gefundenen Stelle durch. Beispiel:
:2,10s/a/b/g ersetzt in den Zeilen von 2 bis 10 alle
Buchstaben a durch b.
u - Undo, wiederruft die letzte Änderung.
U - Stellt die aktuelle Zeile wieder her.
~ - Ändert Groß-/Kleinschreibung.
. - Wiederholt das letzte Kommando.
Tip: Unter DOS/Windows erstellte Dateien erscheinen unter GNU/Linux häufig mit
doppelten Zeilenendezeichen, da auf diesen Systemen eine Kombination aus
CR+LF verwendet wird. CR (Carriage Return) hat den ASCII-Code 13, LF
(Line Feed) den ASCII-Code 10.
Um diese Dateien zu konvertieren gibt es verschiedene Lösungsansätze, im
vi benutzt man das Kommando :se
ff=unix. Sollten noch überflüssige RETURN-Zeichen (^M) am
Zeilenende auftauchen, so lassen sich diese mittels
:1,$s/^M//g entfernen.
Dabei muß man das ^M durch Drücken von STRG-V, gefolgt von STRG-M, eingeben. STRG-V dient dazu, die nachfolgend gedrückte Taste(nkombination) direkt in den Text zu übernehmen.