16.2 Modi
vi arbeitet in verschiedenen Modis, welche genutzt werden, um verschiedene Aufgaben zu bewältigen. Wenn Sie vi zum ersten mal starten werden Sie in den Befehlsmodus gebracht. An dieser Stelle können sie verschiedene Befehle zum Manipulieren von text, Bewegen in der Datei, speichern, beenden und zum Ändern des Modus absetzen. Das Bearbeiten des Textens wird im Einfügemodus durchgeführt. Sie können schnell, mit einer Vielzahl von Tastenfolgen, welche unten erklärt werden, zwischen den Modi wechseln.
16.2.1 Befehlsmodus
Sie werden zunächst in den Befehlsmodus geführt. Von diesem Modus können Sie nicht direkt Text eingeben oder bearbeiten, was bereits vorhanden ist. Allerdings können Sie text manipulieren, suchen, beenden, speichern, neue Dateien laden und mehr. Dies ist nur als Einführung in den Befehlsmodus gedacht. Für eine Beschreibung der verschiedenen Befehle schlagen Sie bitte in Abschnitt 16.7 nach.
Der wahrscheinlich am häufigsten genutzte Befehl im Befehlsmodus ist der Wechsel zum Einfügemodus. Dies kann durch das Drücken der Taste i erreicht werden. Der Cursor ändert die Form und -- INSERT -- wird am Ende des Bildschirms angezeigt (Beachten Sie, dass dies nicht in allen Klonen von vi so sein muss). Von dort an werden alle Ihre Tastendrücke im aktuellen Buffer eingefügt und am Bildschirm angezeigt. Um wieder in den Befehlsmodus zu kommen, drücken Sie die ESCAPE-Taste.
Im Befehlsmodus bewegen Sie sich auch in der Datei. Auf manchen Systemen können Sie die Pfeiltasten nutzen, um sich herumzubewegen. Auf anderen Systemen könnte es sein, dasss Sie die traditionelleren Tasten "hjkl" nutzen müssen. Hier ist eine einfache Auflistung, wie diese Tasten genutzt werden, um sich herumzubewegen:
| h | Ein Zeichen nach Links bewegen |
| j | Ein Zeichen nach Unten bewegen |
| k | Ein Zeichen nach Oben bewegen |
| l | Ein Zeichen nach Rechts bewegen |
Drücken Sie einfach eine Taste, um sich zu bewegen. Wie Sie später sehen werden, können diese Teasten mit einer Zahl kombiniert werden um sich noch effizienter bewegen zu können.
Viele der Befehle, die Sie im Befehlsmodus nutzen werden, starten mit einem Doppelpunkt. Zum Beispiel steht :q, wie bereits früher behandelt, für "Beenden". Der Doppelpunkt gibt einfach an, dass es sich um einen Befehl handelt während "q" vi mitteilt, dass es geschlossen werden soll. Andere Befehle bestehen aus einer optionalen Nummer der ein Buchstabe folgt. Diese Befehle haben keinen Doppelpunkt vorangestellt und werden generell genutzt um den Text zu manipulieren.
Zum Beispiel kann das Löschen einer Zeile, in einer Datei, durch das Tippen von dd erreicht werden. Dies wird die Zeile, auf der der Cursor ist, löschen. Das Ausführen des Befehls 4dd würde vi mitteilen, dass er die Zeile, auf der der Cursor ist, und 3 Zeilen danach löschen soll. Im allgemeinen sagt die Zahl vi wie oft er den Befehl wiederholen soll.
Sie können auch eine Zahl mit den Bewegungstasten kombinieren um sich mehrere Zeichen auf einmal weiter zu bewegen. Zum Beispiel würde 10k dafür sorgen, dass Sie sich 10 Zeilen nach oben bewegen.
Der Befehlsmodus kann auch zum Ausschneiden und Einfügen, Textpassagen einsetzen und zum Einlesen anderer Dateien in den aktuellen Buffer geuntzt werden. Das Kopieren von Text kann mit der y-Taste erreicht werden (y steht für eglisch "yank" (herausziehen)). Kopieren der aktuellen Zeile geht durch Tippen von yy und diesem Befehl kann eine Zahl vorangestellt werden, um mehrere Zeilen zu kopieren. Dann bewegen Sie sich zu der Zeile an der eingefügt werden soll und drücken Sie p. Der Text wird in der Zeile nach der aktuellen Zeile eingefügt.
Ausgeschnitten wird Text durch Tippen von dd und p kann verwendet werden um den Text wieder in die Datei einzufügen. Text von einer anderen Datei zu lesen, ist einfach. Tippen Sie einfach :r gefolgt von einer Leerstelle und dem Dateinamen, der Datei, die den Text enthält, der eingefügt werden soll. Die Dateiinhalte werden in den aktuellen Buffer in die Zeile nach dem Cursor eingefügt. Aufwändigere vi-Klone enthalten auch Dateinamen-Vervollständigung, ähnlich wie die in den Shells.
Der letzte Verwendungszweck, der behandelt wird, ist das Suchen. Der Befehlsmodus erlaubt einfaches Suchen, genau so wie komplizierte Suchen-und-Ersetzen Befehle, welche Gebrauch von einer mächtigen Variante von Regular Expressions Gebrauch machen. Eine ausführiche Dikussion über Regular Expressions würde den Rahmen dieses Kapitels sprengen, deshalb wird dieser Abschnitt nur einfache Suchen behandeln.
Eine einfache Suche wird durch Drücken der /-Taste, gefolgt vom zu suchenden Text, ausgeführt. vi beginnt von der Cursorposition an, bis zum Ende des Dokuments, nach einem Treffer zu suchen und stoppt sobald einer gefunden wird. Beachten Sie, dass ungenaue Treffer auch dafür sorgen, dass vi stoppt. Zum Beispiel wird eine Suche nach "the" dafür sorgen, dass vi für "then" und "therefore", und so weiter, stoppen wird. Dies ist deshalb der Fall, weil "the" auf all diese Wörter zutrifft.
Nachdem vi den ersten Treffer gefunden hat können Sie die Suche durch Tippen von /, gefolgt von Enter, fortsetzen. Sie können auch rückwärts durch die Datei suchen, wenn Sie den Schrägstrich durch ein ? ersetzen. Zum Beispiel können Sie die Datei rückwärts nach "the" durchsuchen, indem Sie ?the tippen.
16.2.2 Einfügemodus
Einfügen und Ersetzen von Text wird im Einfügemodus erledigt. Wie bereits früher erwähnt wurde, können Sie durch Drücken der Taste i, im Befehlsmodus, in dem Einfügemodus wechseln. Dann wird sämtlicher Text, den Sie tippen, in den aktuellen Buffer eingegeben. Durch Drücken der ESCAPE-Taste kommen Sie zurück in den Befehlsmodus.
Das Ersetzen von Text kann auf verschiedene Weisen durchgeführt werden. Vom Befehlsmodus aus führt das Drücken von r dazu, dass Sie die Zeichen unterhalb des Cursors ersetzen können. Tippen Sie einfach das neue Zeichen und es wird das Zeichen unterhalb des Cursors ersetzen. Sie werden danach umgehend wieder in den Befehlsmodus gebracht. Das Drücken von R erlaubt Ihnen so viele Zeichen zu ersetzen, wie Sie möchten. Um aus diesem Ersetzen-Modus herauszukommen, drücken Sie einfach ESCAPE um zurück in den Befehlsmodus zu kommen.
Es gibt auch noch einen weiteren Weg um zwischen Einfügen und Ersetzen umzuschalten. Drücken der EINFÜGEN-Taste im Befehlsmodus bringt Sie in den Einfügemodus. Sobald Sie im Einfügemodus sind, fungiert die EINFÜGEN-Taste auf Ihrer Tastatur als Umschater zwischen Einfügen und Ersetzen. Einmal Drücken und Sie können ersetzen. Ein weiteres mal Drücken und Sie können Text einfügen.