
vi
Man spricht es wie ``v'' und dann ``i'' im Englischen aus.
Vi steht für ``visual-interface'' und hat seine
Wurzeln in frühen Versionen von Berkeley UNIX (auch BSD).
Später wurde der editor von allen unices adaptiert/portiert da er
sehr praktisch und schlank ist. 'vi' hat weiters sehr viele
Verwandte/Abgewandelte Editoren wie nvi, vim (vi-iMproved), elvis,
... ... wir wollen hier aber nur plain-vi durchgehen weil das ohnehin
für alle Versionen gilt.
'vi' ist/sollte auf jedem ausgelieferten Linux/UNIX vorhanden sein -
dies ist einer der grössten Vorteile dieses Editors.
Auch in Situationen wo andere Editoren nicht verfügbar sind ist 'vi'
normalerweise zu gebrauchen. ('vi' braucht ein funktionierendes Terminal
wie VT100 oder was anderes, wohingegen 'ex' auch mit dumb-Terminals
verwendbar ist -> zeilen-orientiert). ex/vi sind an und für sich
dasselbe Programm das nur verschieden aufgerufen wird.
Die Syntax zum starten von vi sieht meist so aus:
$ vi filename
oder
$ vi filename1 filename2 filename3 [...]
Hier kann natürlich auch File-Globbing verwendet werden.
z.B. sehr nützlich sind Aufrufe wie:
$ vi *.c
was z.B. alle files mit der endung .c aufmacht (der reihe nach).
Umschalten kann man dann im editor z.B. mit ':n (next file)'.
vi hat auch einen sog. recovery-mode der in den meisten vi-Implementationen
mit -r zu erreichen ist. Recovery hilft z.B. wenn während einer
Editor-Session der Server abstürzt, rebootet wird, usw. damit lässt
sich die abgebrochene Editor-Session wieder retten.
z.B.
$ vi -r
vi: no files to recover.
Einfaches Editieren:
~~~~~~~~~~~~~~~~~~~~
Nachdem nun vi mit einem Textfile (oder einfach nur vi ohne was ->
leeres Text-Dokument) gestartet wurde steht man vor einem Bildschirm
der aussieht wie:
[] <-- Cursor
~
~
~
~
~
/tmp/vi.Ul1449: new file: line 1
Das sieht alles ein wenig kryptisch aus zu Beginn; ganz unten haben wir
eine Statuszeile die nach dem Aufruf das aktuelle File und die Position
im File zeigt. (Das kann man beim Editieren mit ^G auch anzeigen lassen).
In dieser Statuszeile werden auch Befehle vom Benutzer eingegeben.
Ganz wichtig bei 'vi' ist, dass es 2 Modi gibt. Einen command-mode und einen
insert-mode. umschalten kann man mit <ESC> (escape-taste,
auf den meisten keyboards links oben).
Ist man sich unsicher in welchem modus man ist am besten einmal <ESC>
drücken. Dann ist man mit Sicherheit im command-mode.
Befehle bestehen im ``vi'' meistens aus einem einzelnen Buchstaben.
Hier möchte ich die Wichtigsten kurz erklären.
Befehle funktionieren generell nur im command mode da man im insert-mode
eben nur Zeichen einfügt.
Cursorbewegung:
h bewege Cursor ein zeichen nach links
j bewege Cursor eine zeile nach unten
k bewege Cursor eine zeile nach oben
l bewege Cursor ein zeichen nach rechts
Bei manchen Linux/UNIX-Arten funktionieren auch die sog. Cursor-tasten
(Pfeile). Man sollte aber generell versuchen mit den oben erklärten
Bewegungsbefehlen zu arbeiten weil das immer und überall funktioniert.
Man kann unter 'vi' auch die Anzahl der folgenden Befehle angeben.
z.B. würde funktionieren:
5j <- bewegt den Cursor 5 Zeilen nach unten.
Weitere wichtige Befehle sind:
/text sucht nach dem string ``text'' und bewegt den Cursor
an die erste Stelle des gefundenen Wortes. Tut nichts wenn nichts
gefunden wird.
a 'append' - heisst soviel wie "füge Text NACH dem Cursor ein".
i 'Insert' - fügt Text vor dem aktuellen Cursor ein.
o macht eine neue Zeile unter der Zeile in der der Cursor steht
und schaltet auf insert-modus um.
hierbei sei erwähnt dass nachdem man einen der insert befehle a, i
oder o verwendet hat und fertig mit Texttippen ist man mit <ESC>
in den command-mode umschalten sollte.
Wichtige Befehle zum Textkopieren:
yy kopiert die zeile in der sich der Cursor befindet in den Zwischenbuffer.
Achtung: auch hier geht natürlich z.B. 5yy um 5 zeilen in den
Zwischenbuffer zu kopieren!
p kopiert die Zeile die im Zwischenbuffer gespeichert ist nach der Zeile
wo grad der Cursor steht.
Wichtige Befehle zum löschen von Text:
dd löscht eine Zeile. Auch hier gilt z.B. 10dd um 10 zeilen zu
Löschen.
x löscht das aktuelle Zeichen in der Cursor-position.
befehle zum abspeichern/quitten:
Speichern:
:w schreibt das file mit dem aktuellen Namen
(den, den man beim Aufruf von ``vi'' angegeben hat.
:w file_name schreibt das aktuelle Text-Dokument
in ein neues File namens 'file_name'. Kann auch zum Überschreiben
von Dateien genommen werden.
Ausstieg:
:q versucht vi zu beenden - klappt aber nur wenn es keine
nichtgeschriebenen Veränderungen in der Datei gibt; wurde was
verändert, muss :w zum Speichern verwendet werden oder:
:q! steigt aus egal ob gespeichert wurde. Beendet vi in jedem
Fall. Vielleicht wichtig vor allem für Anfänger ist die
Sequenz: <ESC>:q! um ggf. von insert->command-mode zu schalten und
vi zu beenden.
(Note: Diese Befehle funktionieren alle auch bei ex, nur sieht man eben
immer nur die aktuelle Zeile des Dokumentes.)
Weitere Befehle zum Navigieren in
grösseren Dateien:
: geht zu Zeilennummer .
G geht zum Dateiende.
1G geht zum Dateianfang. Kann auch mittels :0 erlangt werden.
^ geht zum Zeilenanfang
$ geht zum aktuellen Zeilenende
^F (forward) geht eine Seite nach vor
^B (backward) geht eine Seite zurück
^U (up) geht eine halbe Seite zurück
^D (down) geht eine halbe Seite nach vor
wurde /text verwendet um nach einem Textbruchstück
in einer Datei zu suchen ist es oft praktisch, wiederkehrende 'matches'
zu finden. D.h. ich will einfach weitersuchen bis zum nächsten 'text'.
Dies kann man bei ``vi'' mit den Befehlen
n (sucht vorwärts nach dem letzten Suchbegriff)und
N (sucht rückwärts nach dem letzten Suchbegriff) erreichen.
'vi' ist ein sehr mächtiger und umfassender Editor mit dem man
eigentlich fast alles mit Textdateien machen kann. Die Befehle die wir
hier gehört haben sollten an und für sich langen zum einfachen
Editieren. Wer mehr will
einfach einen kurzen Blick in die Manpage werfen
oder die Referenzen am
ende dieses CD's ansurfen.
REFERENCES:
[0] man vi
[1] http://www.uwsg.iu.edu/edcert/session3/editors/vi.html
[2] http://www.thomer.com/thomer/vi/vi.html
[3] http://www.oreilly.com/catalog/vi6/
|