Wie ersetzt man Wörter in mehr als einer Zeile im vi-Editor?

Wie ersetzt man Wörter in mehr als einer Zeile im vi-Editor?

Beispielsweise wird im vi-Editor eine Datei mit 8 Zeilen des Wortes „today“ erstellt, und ich habe mich gefragt, wie ich mit einem Befehl 4 Zeilen in das Wort „gesteron“ ändern kann.

Antwort1

Bei den meisten Ex-Befehlen (d. h. Befehle, die durch Drücken von :(Doppelpunkt) und dann des Befehlsnamens aufgerufen werden), die auf den Inhalt der Datei einwirken, kann vor dem Befehl ein Bereich angegeben werden. Dieser Bereich gibt an, welche Zeilen vom Befehl betroffen sind. Die allgemeine Form eines Bereichs besteht aus zwei durch Kommas getrennten Zahlen, und der Befehl wirkt auf alle Zeilen von der ersten bis zur zweiten Zahl einschließlich. Beispiel:

1,4s/today/yesterday/g

ersetzt alle Vorkommen von todaydurch yesterdayin den ersten vier Zeilen der Datei.

Sie können einer Zahl ein Zeichen voranstellen, um sie relativ zur aktuellen Zeile zu machen. Beispiel:

-1,+1s/today/yesterday/g

führt den Ersatz auf der vorherigen Zeile, der aktuellen Zeile und der folgenden Zeile durch. Wenn Sie das Komma einfügen, aber eine der Zahlen weglassen, bedeutet dies beispielsweise die aktuelle Zeile

,+1s/today/yesterday/g

führt die Ersetzung auf der aktuellen und der folgenden Zeile durch. Sie können $statt einer Zahl auch die letzte Zeile der Datei angeben. Wenn Sie das Komma weglassen und nur eine Zahl angeben, dann wirkt der Befehl nur auf diese Zeile, z. B.

+1s/today/yesterday/g

führt den Ersatz nur in der folgenden Zeile durch.

Antwort2

Sie können den folgenden Befehl verwenden:

:n,m s/today/yesterday/

d. h. ersetzen Sie von Zeile n bis m das Wort „heute“ durch „gestern“.

Antwort3

Versuche dies :

Wechseln Sie im VI-Editor in den Befehlsmodus und versuchen Sie den folgenden Befehl:

:%s/today/yesterday/g

g – heute global durch gestern ersetzen.

verwandte Informationen