vi bietet mehrere Befehle, mit denen Sie innerhalb einer Datei nach Zeichenfolgen suchen und diese durch andere Zeichenfolgen ersetzen können.
Eine Zeichenfolge ist eine beliebige Kombination aus Buchstaben, Zahlen, Satzzeichen und Sonderzeichen wie Tabs, Zeilenschaltungen und Leerzeichen. Zeichenfolgen können aus einem Teil eines Worts, einem vollständigen Wort oder mehreren Wörtern bestehen.
Um ab der aktuellen Cursorposition in Richtung Dateiende nach einer Zeichenfolge zu suchen, geben Sie einen Schrägstrich (/) und den Suchtext ein und schließen die Eingabe mit Return" ab. Der Cursor springt daraufhin auf die nächste Stelle, an der die Zeichenfolge vorkommt.
Wenn in Richtung Dateianfang gesucht werden soll, geben Sie statt / das Zeichen ? ein. Damit wird die Suchrichtung von n und N umgekehrt.
Danach können Sie den Suchvorgang mit n und N beliebig oft wiederholen, wobei n immer in Standardrichtung und N in umgekehrter Richtung sucht.
Normalerweise wird Groß- und Kleinschreibung beachtet, d. h. wenn Sie nach modus" suchen, wird Modus" nicht gefunden. Soll die Schreibweise ignoriert werden, geben Sie :set ic ein. Diese Einstellung gilt dann solange, bis Sie sie mit :set noic deaktivieren.
Ist die gesuchte Zeichenfolge nicht vorhanden, wird in der Statuszeile die Meldung Muster nicht gefunden angezeigt.
Einige Sonderzeichen ( / & ! . ^ * $ \ ?) haben bei Suchläufen spezielle Bedeutung und müssen daher durch einen vorangestellten Gegenschrägstrich entwertet werden, wenn sie als normale Textzeichen interpretiert werden sollen. Um beispielsweise nach der Zeichenfolge wieso?" zu suchen, geben Sie /wieso\? ein und drücken Return". Um einen Gegenschrägstrich zu entwerten, geben Sie \\ ein.
Die Verwendung dieser Sonderzeichen als Befehle bei einem Suchlauf wird im folgendem Abschnitt beschrieben.
Um genauer zu suchen, können Sie in der Zeichenfolge bestimmte Suchkriterien durch Sonderzeichen angeben:
Zeilenanfang
Zeilenende
Wortanfang
Wortende
Metazeichen
Der Zirkumflex (^) steht für den Anfang einer Zeile. Mit folgendem Befehl suchen Sie nach der nächsten Zeile, die mit der Zeichenfolge Test" beginnt:
/^Test |
Das Dollarzeichen ($) steht für das Ende einer Zeile. Mit folgendem Befehl suchen Sie nach der nächsten Zeile, die mit test." endet (da der Punkt auch als Suchkriterium verwendet werden kann, muß er entwertet werden):
/test\.$ |
Die Zeichenkombinationen \< und \> stehen für den Anfang bzw. das Ende eines Worts und werden an den Anfang und das Ende des Suchtexts gestellt. Auf diese Weise können Sie den Editor anweisen, nach vollständigen Wörtern zu suchen. Bei Eingabe des folgenden Befehls wird also nur das Wort Test" selbst gefunden, andere Wörter, die mit Test" beginnen, dagegen nicht:
/\<Test\> |
Der Punkt (.) steht für ein beliebiges Zeichen. Mit dem folgenden Befehl wird sowohl nach Test" wie nach Text" gesucht:
/Te.t |
Da Sie hier nach einer Zeichenfolge und nicht nach einem Wort suchen, werden auch Wörter wie Testlauf" oder Textverarbeitung" gefunden.
Es gibt noch eine weitere, vielseitigere Möglichkeit, nach verschiedenen Schreibweisen einer Zeichenfolge zu suchen. Dabei setzen Sie die alternativ zu verwendenden Zeichen in eckige Klammern. Wenn Sie /[mh]zeichenfolge eingeben, kann die gesuchte Zeichenfolge also mit m" oder h" beginnen. Geben Sie statt dessen /[d-m]zeichenfolge ein, kann die Zeichenfolge mit einem beliebigen Buchstaben von d" bis m" beginnen.
Der Stern (*) steht für eine beliebige Anzahl (auch Null) des vorhergehenden Zeichens. Durch Kombination mit den Klammern läßt sich die Suche weiter präzisieren. Um zum Beispiel nach allen Zeichenfolgen zu suchen, die mit einem beliebigen Buchstaben beginnen und mit ist" enden, und dabei auch die Zeichenfolge ist" selbst einzuschließen, geben Sie folgendes ein:
/[a-z]*ist |
Wenn Sie eine Zeichenfolge im gesamten Text durch eine andere ersetzen wollen, geben Sie den Suchbefehl in folgendem Format ein:
:g/suchtext/s//ersatztext/g |
Die Eingabe wird mit Return" abgeschlossen. Alle im vorherigen Abschnitt beschriebenen Sonderzeichen können auch beim Ersetzen von Zeichenfolgen verwendet werden.
Um die Zeichenfolge Computer" durch Workstation" zu ersetzen, würden Sie also folgendes eingeben:
:g/Computer/s//Workstation/g |
Wenn Sie nicht sicher sind, ob Sie eine Zeichenfolge überall ersetzen wollen, beenden Sie den Befehl mit gc statt mit g. In diesem Fall werden Sie bei jeder gefundenen Textstelle gefragt, ob die Zeichenfolge tatsächlich ersetzt werden soll. Sie können dann mit y (ja) oder n (nein) antworten.
:g/Computer/s//Workstation/gc |
Wenn der Suchlauf mit Bestätigung durchgeführt wird, können Sie ihn mit Ctrl-C" abbrechen.
Mit dem Befehl G springen Sie zur letzten Zeile einer Datei. Um in eine beliebige andere Zeile zu wechseln, geben Sie vor dem Befehl die Nummer der gewünschten Zeile ein. Mit 1G setzen Sie den Cursor also in die erste Zeile der Datei.
Wenn Sie die Datei test beispielsweise bis Zeile 51 bearbeitet und die Arbeitssitzung danach beendet haben, geben Sie nach dem nächsten Öffnen einfach 51G ein und können dann an der Stelle weiterarbeiten, an der Sie zuvor aufgehört hatten.