Linux

Suchen und Ersetzen in Vim / Vi

Suchen und Ersetzen in Vim / Vi

Dieser Artikel beschreibt, wie Sie Text in Vim / Vi . suchen und ersetzen.

Vim ist der beliebteste Befehlszeilen-Texteditor. Es ist auf macOS und den meisten Linux-Distributionen vorinstalliert. Das Suchen und Ersetzen von Text in Vim ist schnell und einfach.

Einfaches Suchen und Ersetzen #

In Vim können Sie Text mithilfe der suchen und ersetzen :Ersatz (:so) Befehl.

Um Befehle in Vim auszuführen, müssen Sie sich im normalen Modus befinden, dem Standardmodus beim Starten des Editors. Um aus einem anderen Modus in den normalen Modus zurückzukehren, drücken Sie einfach die 'Esc'-Taste.

Die allgemeine Form des Ersatzbefehls ist wie folgt:

:[Bereich]s/Muster/String/[Flags] [Anzahl] 

Der Befehl durchsucht jede Zeile in [Reichweite] Für ein Muster, und ersetzt es durch a String. [Anzahl] ist eine positive ganze Zahl, die den Befehl multipliziert.

Wenn nein [Reichweite] und [Anzahl] gegeben sind, wird nur das in der aktuellen Zeile gefundene Muster ersetzt. Die aktuelle Zeile ist die Zeile, in der sich der Cursor befindet.

Um beispielsweise nach dem ersten Vorkommen der Zeichenfolge 'foo' in der aktuellen Zeile zu suchen und sie durch 'bar' zu ersetzen, würden Sie Folgendes verwenden:

:s/foo/bar/ 

Um alle Vorkommen des Suchmusters in der aktuellen Zeile zu ersetzen, fügen Sie das G Flagge:

:s/foo/bar/g 

Wenn Sie das Muster in der gesamten Datei suchen und ersetzen möchten, verwenden Sie das Prozentzeichen % als bereich. Dieses Zeichen gibt einen Bereich von der ersten bis zur letzten Zeile der Datei an:

:%s/foo/bar/g 

Wenn die String ein Teil wird weggelassen, er wird als leerer String betrachtet und das übereinstimmende Muster wird gelöscht. Der folgende Befehl löscht alle Instanzen der Zeichenfolge 'foo' in der aktuellen Zeile:

:s/foo//g 

Anstelle des Schrägstrichs (/), können Sie jedes andere nicht-alphanumerische Einzelbyte-Zeichen außer als Trennzeichen verwenden use. Diese Option ist nützlich, wenn Sie das Zeichen '/' im Suchmuster oder in der Ersetzungszeichenfolge haben.

:s|foo|bar| 

Um jede Ersetzung zu bestätigen, verwenden Sie die c Flagge:

:s/foo/bar/gc 
durch Balken ersetzen (j/n/a/q/l/^E/^Y)? 

Drücken Sie ja um das Streichholz zu ersetzen oder l um das Spiel zu ersetzen und zu beenden. Drücken Sie nein um das Spiel zu überspringen und q oder Esc die Substitution aufgeben. Das ein Option ersetzt die Übereinstimmung und alle verbleibenden Vorkommen der Übereinstimmung. Um den Bildschirm nach unten zu scrollen, verwenden Sie STRG+Y, und um nach oben zu scrollen, verwenden Sie STRG+E.

Sie können auch reguläre Ausdrücke als Suchmuster verwenden. Der folgende Befehl ersetzt alle Zeilen, die mit 'foo' beginnen, durch 'Vim is the best':

:%s/^foo.*/Vim ist der Beste/gc 

Das ^ (Caret) Symbol entspricht dem Anfang einer Zeile und .* entspricht einer beliebigen Anzahl von Zeichen.

Groß-/Kleinschreibung #

Standardmäßig wird beim Suchvorgang die Groß-/Kleinschreibung beachtet; Suche nach „FOO“ wird nicht mit „Foo“ übereinstimmen.

Um die Groß-/Kleinschreibung für das Suchmuster zu ignorieren, verwenden Sie die ich Flagge:

:s/Foo/bar/gi 

Eine andere Möglichkeit, das Ignorieren der Groß-/Kleinschreibung zu erzwingen, ist das Anhängen \c nach dem Suchmuster. Beispielsweise, /Linux\c führt eine Ignorier-Fall-Suche durch.

Wenn Sie die Standardeinstellung für Groß-/Kleinschreibung geändert haben und eine Suche mit Berücksichtigung der Groß-/Kleinschreibung durchführen möchten, verwenden Sie die ich Flagge:

:s/foo/bar/gi 

Großbuchstaben \C nachdem das Muster auch die Groß-/Kleinschreibung erzwingt.

Suchbereich #

Wenn kein Bereich angegeben ist, funktioniert der Ersatzbefehl nur in der aktuellen Zeile.

Der Bereich kann entweder eine Linie oder ein Bereich zwischen zwei Linien sein. Die Zeilenbezeichner werden mit dem . getrennt , oder ; Zeichen. Der Bereich kann über die absolute Zeilennummer oder Sonderzeichen angegeben werden.

Um beispielsweise alle Vorkommen von 'foo' durch 'bar' in allen Zeilen ab Zeile 3 bis Zeile 10 zu ersetzen, würden Sie Folgendes verwenden:

:3,10s/foo/bar/g 

Der Bereich ist inklusiv, das heißt, die erste und letzte Zeile sind im Bereich enthalten.

Der Punkt . Zeichen zeigt die aktuelle Zeile an und $ - das Dollarzeichen die letzte Zeile. So ersetzen Sie 'foo' in allen Zeilen von der aktuellen bis zur letzten Zeile:

:.,$s/foo/bar/ 

Der Zeilenbezeichner kann auch mit dem '+' oder '-' Symbol gesetzt werden, gefolgt von einer Zahl, die von der vorhergehenden Zeilennummer addiert oder subtrahiert wird. Wenn die Zahl nach dem Symbol weggelassen wird, wird standardmäßig 1 . verwendet.

Um beispielsweise jedes 'foo' durch 'bar' zu ersetzen, beginnend mit der aktuellen Zeile und den vier nächsten Zeilen, geben Sie Folgendes ein:

:.,+4s/foo/bar/g 

Ersetzen des ganzen Wortes #

Der Ersatzbefehl sucht nach dem Muster als Zeichenfolge, nicht als ganzes Wort. Wenn Sie beispielsweise nach „gnu“ suchen, findet die Suche Treffer, bei denen „gnu“ in größeren Wörtern wie „cygnus“ oder „magnum“ eingebettet ist.

Um nach einem ganzen Wort zu suchen, geben Sie ein \< um den Anfang eines Wortes zu markieren, geben Sie das Suchmuster ein, geben Sie . ein \> um das Ende eines Wortes zu markieren:

Um beispielsweise nach dem Wort „foo“ zu suchen, würden Sie verwenden \:

:s/\/Bar/ 

Ersatzhistorie #

Vim verfolgt alle Befehle, die Sie in der aktuellen Sitzung ausführen. Um den Verlauf nach vorherigen Ersatzbefehlen zu durchsuchen, geben Sie :so und verwenden Sie die Pfeiltasten auf/ab, um eine vorherige Ersatzoperation zu finden. Um den Befehl auszuführen, drücken Sie einfach Eingeben. Sie können den Befehl auch bearbeiten, bevor Sie den Vorgang ausführen.

Beispiele #

Kommentarzeilen (hinzufügen # vor der Zeile) von 5 bis 20:

:5,20s/^/#/ 

Entfernen Sie die Kommentarzeilen von 5 bis 20, machen Sie die vorherigen Änderungen rückgängig:

:5,20s/^#// 

Ersetzen Sie alle Vorkommen von „Apfel“, „Orange“ und „Mango“ durch „Frucht“:

:%s/Apfel\|Orange\|Mango/Frucht/g 

Entfernen Sie nachgestellte Leerzeichen am Ende jeder Zeile:

:%s/\s\+$//e 

Fazit #

Suchen und Ersetzen ist eine leistungsstarke Funktion von Vim, mit der Sie schnell Änderungen an Ihrem Text vornehmen können.

Bei Fragen gerne einen Kommentar hinterlassen.

Beste Spiele zum Spielen mit Handtracking
Oculus Quest hat kürzlich die großartige Idee des Hand-Trackings ohne Controller vorgestellt. Mit einer ständig steigenden Anzahl von Spielen und Akti...
So zeigen Sie OSD-Overlay in Vollbild-Linux-Apps und -Spielen an
Das Spielen von Spielen im Vollbildmodus oder die Verwendung von Apps im ablenkungsfreien Vollbildmodus kann Sie von relevanten Systeminformationen ab...
Top 5 Karten zur Spielaufnahme
Wir alle haben Streaming-Gameplays auf YouTube gesehen und geliebt. PewDiePie, Jakesepticye und Markiplier sind nur einige der Top-Gamer, die Millione...