|
Beim Editieren einer langen Datei, insbesondere eines Quellcodes, ist es sehr
praktisch, wenn man Markierungen setzen kann, um später schnell diese Stellen
wiederzufinden.
Um eine Markierung zu setzen, drücken Sie (im Kommandomodus) die Zeichenfolge
mx, wobei x ein beliebiger Kleinbuchstabe ist. Um später zu
dieser Markierung zu springen, genügt ein (wieder im Kommandomodus) eingegebenes
'x, wobei x wieder der gleiche Buchstabe ist. Sie können
für Markierungen entweder Buchstaben (a-z und A-Z) oder ganze Wörter verwenden.
Diese Markierungen können auch überall dort
verwendet werden, wo Zeilenangaben auftreten.
|
Sie haben in vi nicht nur die Möglichkeit, 26 Markierungen zu setzen, Sie können
auch 36 Puffer (1 .. 0 und a .. z) zum Kopieren und Einfügen verwenden (was ein großer Vorteil von
vi gegenüber anderen Editoren ist).
Drücken Sie v um den Anfang des Bereiches zu markieren den
Sie kopieren wollen. Bewegen Sie den Cursor zum Ende. Dabei wird der markierte
Bereich hervorgehoben. Um den markierten Bereich z.B. in den Puffer h zu
kopieren genügt nun ein "hy (Das Anführungszeichen steht für
"Puffer", das "y" steht für "yank", also kopieren). Einfügen können Sie den
Puffer bei Bedarf mit "hp ("p" für "paste, einfügen).
Anstatt einen Puffer über einen Buchstaben anzusprechen, können Sie auch einfach
einen Standardpuffer verwenden. Dazu lassen Sie jeweils das Anführungszeichen
und den Puffernamen weg.
|
Im Kommandomodus können Sie sich mit den Cursortasten durch den Text navigieren.
Sie können dabei auch eine Zahl voranstellen. Wenn Sie z.B.
30 eingeben und danach die NACH-LINKS -Taste drücken,
bewegt sich der Cursor um 30 Zeichen nach links.
Das Voranstellen von Zahlen als Wiederholungsfaktor funktioniert bei fast allen
Befehlen.
Mit b können Sie ein Wort zurück und mit w
eines nach vorne, jeweils zum Wortanfang.
Dabei sind nicht nur Leerzeichen Worttrenner. Bei der Zeichensequenz
"Test+wort#-()-weiter" beispielsweise muss man fünfmal das Kommando
w anwenden, um vom Anfang des Wortes bis zum Ende zu gelangen.
Die verwandten Befehle B und W sehen nur
Leerzeichen als Worttrenner an. Die Befehle e und E
springen jeweils bis zum Wortende vor. Dabei gilt dieselbe Unterscheidung der
Worttrenner wie oben vorgestellt.
Einen Satz zurück kommen Sie mit ( und einen vor entsprechend
mit ). Auch hier geben vorangestellte Zahlen den
Wiederholungsfaktor an: 5( bewegt den Cursor 5 Sätze zurück
und mit 4w gelangen Sie 4 Wörter nach vorn.
|
Im Eingabemodus ist es relativ umständlich, Text zu löschen. Wenn Sie eine
komplette Zeile entfernen wollen, stehen Sie sogar vor einem sehr schwierigen
Problem. Daran merkt man schon, dass der Eingabemodus wirklich nur zum Eingeben
von Text gedacht ist und nicht zum Editieren.
Im Kommandomodus steht uns zum Löschen von Text das Kommando
d zur Verfügung. Danach folgt ein Buchstabe, der
kennzeichnet, auf was für eine Texteinheit wir uns beziehen (Wort, Satz, Zeile,
...). Der gelöschte Text wird zusätzlich in die Standard-Zwischenablage
eingefügt.
Um ein Wort zu löschen, drücken Sie dw. Das Wort hinter dem
Cursor löschen Sie entsprechend mit db. Auch hier ist es
wieder möglich, eine Zahl voranzustellen. So löschen Sie mit
3dd 3 Zeilen und mit 5dw 5 Wörter.
Bis zum Anfang des aktuellen Satzes löschen Sie mit d(, bis
zum Ende mit d).
Bis zum Anfang der aktuellen Zeile kann man mit d^ oder auch
mit d0 löschen und bis zum Ende mit d$.
Bei einigen Kommandos kann man auch einen Bereich voranstellen, auf den sie sich
beziehen sollen. So entfernen Sie mit :1,5d die ersten fünf
Zeilen einer Datei. Statt Zeilennummern können Sie auch Markierungen verwenden:
:'a,'bd.
|
Suchen und Ersetzen können Sie in vi mit
regulären Ausdrücken.
Hier eine
Einführung in reguläre Ausdrücke zu geben würde den Rahmen dieser
Kurz-Einführung sprengen.
Wenn Sie nur nach einem Wort suchen, können Sie das mit
/suchbegriff/ machen. Wenn Groß-/Kleinschreibung ignoriert
werden soll, verwenden Sie /wort/i.
Um Text zu ersetzen, müssen Sie in den ex-Modus wechseln. Folgendes Kommando
ersetzt alle Vorkommen von "Unix" mit "Linux":
:1,$s/Unix/Linux/g (Bereich: 1,$, also vom Anfang bis zum
Ende der Datei "s" für "substitute", "ersetzen". Das "g" am Ende steht für
"global". Wird das g weggelassen, wird bei jeder Zeile bloss das erste
Vorkommen von Unix ersetzt. Sehr nett ist es, dass man eben auch innerhalb
eines bestimmten
Bereiches die Ersetzung durchführen lassen kann, d.h. man markiert z.B. per
ma und mb zwei Zeilen und verwendet dann
:'a,'bs/foo/bar/g.
Hängt man am Ende des Suchtextes noch ein /c an, fragt vi vor dem Ersetzen
nach. Dies funktioniert auch in der Kombination mit /g. Somit lautet das
vorherige Kommando, ergänzt um das Nachfragen, :'a,'bs/foo/bar/gc.
|
|