Zusammenfassung
Vi war der erste Vollbild-Editor, den es gab. Er ist einerseits eines der meist genannten Argumente der UNIX®-Gegner, andererseits aber auch eines der Hauptargumente der Befürworter: Er ist recht kompliziert und erfordert einen hohen Lernaufwand aber er ist eines der mächtigsten Werkzeuge wenn man ihn einmal beherrscht. Ein erfahrener Benutzer von Vi bewegt Berge mit ein paar Tastenanschlägen und es gibt wohl ausser Emacs keinen anderen Texteditor mit vergleichbarer Leistung.
Eigentlich ist die in Mandrakelinux enthaltene Version der Vim, für VI iMproved,aber wir werden ihn hier weiterhin Vi nennen.
Falls Sie mehr über den Vi lernen wollen, können Sie sich die Seite Hands-On Introduction to the Vi Editor oder die Vim Website ansehen.
Wir werden für unsere Übung mit Vi die gleiche Kommandozeile benutzen wie vorher mit dem Emacs. Also zurück zu unseren beiden Dateien, geben Sie ein:
$ vi datei1 datei2 |
Danach sollten Sie ein ähnliches Bild vor sich sehen wie das Folgende:
Sie befinden sich jetzt im Befehlsmodus und sehen die erste geöffnete Datei. Da Sie im Befehlsmodus keinen Text eingeben können, wechseln Sie in den Einfügemodus.
Es folgen einige Tastenkürzel für den Einfügemodus:
Im Einfügemodus erscheinen die Zeichen --INSERT-- („--EINFÜGEN--“) am unteren Rand des Schirms damit Sie sehen, in welchem Modus Sie sich befinden. Sie können nur in diesem Modus Text eingeben. Durch drücken der Taste Esc kommen sie wieder den Befehlsmodus zurück.
Während der Texteingabe können Sie die Tasten Backspace und Entf zum Löschen von Zeichen benutzen. Die Pfeiltasten funktionieren in beiden Modi wie gewohnt. Im Befehlsmodus stehen Ihnen noch andere Tastenkombinationen zur Verfügung, die wir später behandeln werden.
Den ex-Modus erreichen Sie im Befehlsmodus durch Eingabe von :. Das Zeichen : erscheint im Mini-Puffer am unteren Rand des Schirms mit einem blinkenden Cursor daneben. Alles, was Sie nun von dort bis zum Drücken der Eingabe-Taste tippen, wird von Vi als ex-Befehl angesehen. Wenn Sie vor dem Drücken der Taste Enter alles Eingegebene inklusive des : löschen, verlassen Sie den ex-Modus und der Cursor springt wieder zurück auf seine vorherige Position.
Zum Sichern der Änderungen in eine Datei geben Sie im Befehlsmodus :w ein, zum Sichern des Pufferinhaltes in eine andere Datei dient :w <datei_name>.
Da wir ja mehrere Dateien im Vi geöffnet haben, können wir mit :next (bzw. :n) zur nächsten Datei und mit :prev (bzw. :N) zur vorhergehenden Datei umschalten. Sie können auch die Sequenz :e dateiname benutzen, die Ihnen erlaubt, einen Dateinamen einzugeben und in diese Datei zu wechseln, falls sie bereits geöffnet ist. Auch hier kann die automatische Textvervollständigung benutzt werden.
Genauso wie im Emacs haben Sie auch hier die Option, mehrere Puffer auf dem Schirm darzustellen. Sie erreichen das mit dem Befehl :split.
Mit der Tastenkombination Strg+w j wechseln Sie in den unteren Puffer und mit Strg+w k wieder in den oberen zurück. Anstelle der Buchstaben j und k können Sie auch die jeweiligen Pfeiltasten einsetzen. Mit :close verschieben Sie den Puffer in den Hintergrund („verstecken“) und mit :q schließen Sie ihn.
Falls Sie versuchen, einen Puffer zu verstecken oder zu schließen, dessen Inhalt noch nicht gespeichert wurde, so wird der Befehl nicht ausgeführt sondern der folgende Text angezeigt:
No write since last change (use ! to override) („Seit der letzten Änderung nicht gespeichert (Benutzen Sie ! um das Schließen zu erzwingen)“).
Folgen Sie in diesem Fall der Anweisung und schreiben Sie :q! oder :close!.
Abgesehen von den Tasten Backspace und Entf im Editiermodus, kennt Vi im Befehlsmodus noch weitere Befehlsfolgen für das Entfernen, Kopieren, Einfügen und Ersetzen von Text. Alle hier aufgelisteten Befehle haben zwei Teile: die auszuführende Aktion und worauf diese Aktion einwirkt. Die Aktionen:
Hier wird erklärt, worauf diese Aktionen einwirken.
h, j, k, l: ein Zeichen nach links, unten, oben, rechts[11]
e, b, w: bewegt den Cursor zum Ende, zum Anfang des aktuellen Wortes und zum Anfang des nächsten Wortes.
^, 0, $: zum ersten Zeichen der aktuellen Zeile, zum Anfang der aktuellen Zeile und zu deren Ende.
f<x>: zum nächsten Vorkommen des Zeichens <x>. So springt der Cursor bei Eingabe von fe zum nächsten Vorkommen von e.
/<string>, ?<string>: zum nächsten bzw. vorherigen Vorkommen der Zeichenkette <string>. /foobar bewegt den Cursor zum nächsten Fundort des Wortes foobar.
Jede dieser „Zielmarkierungen“ oder Sprungbefehle kann eine vorangestellte Wiederholungsangabe bekommen. Für den Befehl G („Go“) bedeutet eine vorangestellte Zahl die Zeilennummer, wohin der Cursor bewegt werden soll. Mit diesen Vorgaben können Sie alle möglichen Kombinationen bilden.
Nun sind viele dieser Befehle alles Andere als intuitiv. Daher ist die beste Option, sie zu lernen, die Übung. Sie können jedoch erkennen, dass der Ausdruck „Berge mit ein paar Tastendrücken bewegen“ keine allzu große Übertreibung ist.
Eines der Kommandos von Vi, das wir bereits beim Kopieren von Text kennen gelernt haben, ist y. Zum Ausschneiden von Text benutzen wir d. Es gibt 27 Speicherseiten oder Puffer zum Speichern der Textteile: ein anonymer Puffer und 26 Puffer, die nach den Buchstaben des kleinen Alphabets benannt werden.
Zur Benutzung des anonymen Puffers geben Sie das entsprechende Kommando ohne Zusätze ein. Also kopiert der Befehl y12w die nächsten 12 Wörter nach dem Cursor in den anonymen Puffer [12]. Mit d12w schneiden Sie den betreffenden Bereich aus.
Um jetzt einen der 26 benannten Puffer zu benutzen geben Sie vor dem Befehl die Sequenz "<x> ein, wobei <x> den Namen des Puffers angibt. Um also die gleichen 12 Wörter in den Puffer k zu kopieren lautet der Befehl "ky12w, zum Ausschneiden entsprechend "kd12w.
Mit dem Befehl p oder P (für Paste) fügen Sie den Inhalt des anonymen Puffers hinter bzw. vor dem Cursor ein. Bein einem benannten Puffer lautet der Befehl "<x>p oder "<x>P entsprechend (zum Beispiel "dp zum Einfügen des Inhaltes des Puffers d hinter dem Cursor).
Schauen wir uns das Beispiel an:
Wir führen diese Aktion folgendermaßen aus:
Wir kopieren die ersten 6 Wörter des Satzes in den Puffer r (zum Beispiel): "ry6w[13];
wir gehen zum Puffer datei2, der im unteren Fenster dargestellt wird: Strg+w j;
Hier fügen wir den Inhalt des Puffers r vor dem Cursor ein: "rp.
Damit bekommen wir das Resultat wie in Abbildung Abbildung 4.6, „VI, nach dem Kopieren des Textblocks“.
Die Suche nach einer Textstelle ist recht einfach: Geben Sie im Befehlsmodus das Zeichen / ein, gefolgt von dem zu suchen den Text, und drücken Sie Enter. So sucht zum Beispiel /Party von der aktuellen Cursorposition ausgehend nach dem String Party. Mit n finden Sie nach dem ersten Vorkommen das zweite Vorkommen wobei die Suche bei Erreichen des Dateiendes wieder am Anfang der Datei beginnt. Die Rückwärts-Suche leiten Sie ein mit ? anstelle von / ein.
Sie beenden Vi mit :q (eigentlich schließt dieser Befehl den aktuellen Puffer, wie wir bereits gelernt haben. Wenn das allerdings der einzige Puffer ist, wird auch Vi beendet). Es gibt euch eine Abkürzung, da Sie meist nur eine einzelne Datei bearbeiten werden:
Sie sollten beim Betrieb von mehreren Puffern daran denken, dass :wq nur den aktiven Puffer speichert und schließt.