VIM Suchen und Ersetzen

Vi/Vim ist einer der legendären Texteditoren da draußen, der immer noch seinen Platz im Arsenal fortgeschrittener und professioneller Anwender findet. Vim ist besonders unter Programmierern beliebt. Jede einzelne Linux-Distribution da draußen enthält Vim standardmäßig. Wenn Sie ein Nicht-Linux-System verwenden, sollten Sie trotzdem in der Lage sein, diesen hochwertigen Texteditor von jedem System aus zu nutzen. Holen Sie sich Vim.

Warum ist dieses alte Stück Software immer noch relevant? Weil es ein Leichtgewicht ist, Tastaturkürzel für fast jede Funktion, eingebaute Ausdruckssuche und ein robustes, stabiles und gesundes Plugin-Ökosystem. Ganz zu schweigen von anderen modernen Texteditor-Funktionen wie der schönen Syntax-Hervorhebung. Sie werden feststellen, dass Vim vor allem unter Programmierern beliebt ist, weil Vim einen starken Tastaturfokus erfordert. Das ist eine gute Praxis für Programmierer.

Wie der Titel des Artikels andeutet, ist das Ziel dieser Anleitung, Ihnen ein besseres Verständnis der Suchen- und Ersetzen-Funktionalitäten von Vim zu bieten. Vim ist nichts, wovor man Angst haben muss. In der Tat ist es eine der Superkräfte, die Sie immer an Ihrer Seite haben werden.

Zunächst brauchen wir einen Demo-Text. Um Vim zu lernen, ist es am sichersten, eine Wegwerf-Textdatei zu erstellen und damit zu tun, was Sie wollen. Auf diese Weise geht nichts Wichtiges verloren, selbst wenn etwas schief geht.

Ich verwende Manjaro Linux als mein Linux-System. Hier erfahren Sie, wie Sie Manjaro Linux installieren. Es ist eine Arch-basierte Distro, die pacman als Standard-Paketmanager verwendet. Ich habe eine Textdatei erzeugt, die alle installierten Pakete auf meinem System enthält.

pacman -Qqe >> PackageList.txt

cat PackageList.txt

Nun starten Sie die Textdatei in Vim!

vim PaketListe.txt

Vim-Suche

Für die Suche verwendet Vim die folgende Struktur.

?<Suchstring>

Suchen wir zum Beispiel nach „python“.

?python

Standardmäßig sitzt die Suche bei einem festen Ergebnis. Um zum nächsten/vorherigen Suchergebnis zu gelangen, verwenden Sie die folgenden Tasten.

Hinweis: Vergessen Sie nicht, Enter zu drücken, bevor Sie die folgenden Tasten verwenden. Andernfalls ändert sich der Suchbegriff!

n – Suche nach dem nächsten Treffer
N – Suche nach dem vorherigen Treffer

Das ist nur die grundlegende Art der Suche. Lassen Sie uns eine etwas leistungsfähigere Methode ausprobieren.

/\<search_string>>

Hier, \< ist für die Angabe des Beginns des Suchstrings zuständig und /> für das Ende des Strings.

Genauso wie im vorherigen Beispiel verwenden Sie n oder N (abhängig von der Groß-/Kleinschreibung), um in den Suchergebnissen zu navigieren.

Die Suche unterstützt auch die Verwendung von Platzhaltern. Zum Beispiel gibt es viele Pakete mit der Erweiterung „python-„.

Um nach allen zu suchen, können wir „python*“ verwenden. Hier sagt das Sternchen, dass alles nach dem Präfix „python“ gesucht wird. Bei jeder Suche kann das Sternchen an einer beliebigen Stelle des Suchbegriffs stehen. Wo auch immer es steht, sagt es Vim, die Lücke mit allen möglichen Daten aus der gesamten Textdatei zu füllen.

/\<python*/>

Wenn Sie suchen, setzt Vim den Cursor immer auf das Anfangszeichen der Treffer. Dies ist die Standardaktion. Machen Sie sich keine Sorgen; Vim erlaubt es, die Standardposition der Cursor-Landung zu ändern.

/python/e

Hier sagt das letzte „e“, dass der Cursor am Ende der passenden Phrase landen soll. Mit dem folgenden Beispiel können Sie auch sagen, dass der Cursor unterhalb oder oberhalb des Suchergebnisses landen soll.

/<search_string>/+2

/<search_string>/-3

Es ist auch möglich, den Cursor vom Anfang/Ende der Suchtreffer zu versetzen. Zum Beispiel landet der folgende Befehl den Cursor bei 3 Zeichen vor dem Anfang.

/<search_string>/s+3

/<Suchstring>/b+3

Hier, das „s“ steht für den Anfang, „+3“ steht für 3 Zeichen vom Anfang. „b“ steht für „begin“. Es funktioniert auch ähnlich wie das „s“. Aus dem Screenshot übersetzt Vim automatisch „b“ in „s“.

Wenn Sie einen Versatz vom Ende der Suchtreffer haben wollen, verwenden Sie „e“.

/<search_string/e-2

Hier ist eine weitere geniale Möglichkeit, eine Suche in einer Textdatei durchzuführen.

:%s/<search_pattern>//gn

Eine detaillierte Erklärung des Befehls finden Sie im nächsten Abschnitt des Artikels.

Vim ersetzen

Das Suchen und Ersetzen ist eine weitere gängige und unverzichtbare Funktion für jeden hochwertigen Texteditor. Vim als Legende bietet eine robuste Möglichkeit, den gewünschten Text auf einfache Weise zu finden und zu ersetzen. Der Befehl für die Funktion ist einfach, ermöglicht aber wirklich komplexe Arbeiten.

:<range> s/<search_string><replace_string><modifier>

Lassen Sie uns die einzelnen Teile aufschlüsseln.

  • Bereich – Definieren Sie den Bereich, in dem die „Suchen und Ersetzen“-Funktion ausgeführt werden soll. Es gibt 2 verschiedene Werte.
    • % – Für die gesamte Datei ausführen
    • <start _line><end_line> – Die Aktion für eine bestimmte Anzahl von Zeilen ausführen.
  • search_string – Die Zeichenkette, die ersetzt werden soll.
  • replace_string – Die neue Zeichenkette, die die alte ersetzen soll.
  • modifier – Bestimmt das Verhalten beim Ersetzen. Es gibt verschiedene Werte.
    • g – Option „Global“. Führt das Ersetzen bei jedem Vorkommen einer Zeile durch.
    • gc – Fragt vor jedem Ersetzen nach einer Bestätigung.
    • gn – Ignoriert die Ersetzungsfunktion und hebt die Funde hervor.

Beispiel: Ersetzen wir alle „python“ durch „Python3“.

:%s/python/Python3/g

Einfach, oder? Schauen wir uns mal das folgende an.

:%s/python/Python3/gc

Es gibt eine Handvoll von Aktionen, die Sie wählen können. Während einige davon bekannt sind, sind es andere nicht. Schauen wir uns an, was diese bedeuten.

  • y – Erlaube die Durchführung der Änderung.
  • n – Verweigere die Durchführung der Änderung.
  • a – Ersetze alles.
  • q – Beende die Aufgabe.
  • l – Ersetze nur dieses Vorkommen. Dann beenden.
  • ^E (Strg + E) – Einen Bildschirm nach oben scrollen
  • ^Y (Strg + Y) – Einen Bildschirm nach unten scrollen

Nun wollen wir den Bereichsteil ausprobieren. Im vorherigen Beispiel haben wir bereits den Bereich „%“ verwendet. Jetzt ist es an der Zeit, unsere Suche auf eine bestimmte Anzahl von Zeilen einzuschränken.

:200,250 s/python/Python3/g

Die Suche beginnt bei Zeile 200 und endet bei Zeile 250. Dazwischen werden alle „python“-Einträge in „Python3“ geändert.

Diese Funktion ist nicht nur auf einen Suchbegriff beschränkt. Sie können auch mehrere Suchbegriffe einbeziehen!

:%s/<search_term_1><search_term_2><search_term_3>
/<replace_string>/g

Lassen Sie uns versuchen, alle Einträge „python“ und „py“ in „Python3“ zu ändern.

:%s/python\|py/Python3/g

Groß-/Kleinschreibung

Alle in dieser Anleitung beschriebenen Tricks sind stark von der Groß-/Kleinschreibung abhängig. Sie müssen wirklich darauf achten, dass Sie bei der Arbeit die Zeichen in der richtigen Groß- und Kleinschreibung eingeben. Zum Beispiel sind „Python“, „python“, „PYTHON“ usw. alles unterschiedliche Eingaben.

Wenn Sie sich die Groß- und Kleinschreibung nicht merken, sagen Sie Vim einfach, dass er case-insensitive werden soll!

/<search_term>\c
:%s/<search_term>\c/<replace_term>/g

Diese Unempfindlichkeit kann auch direkt in der vimrc-Datei aktiviert werden.

set ignorecase

Hier ist eine weitere interessante Option.

set smartcase

Das „ignorecase“ wird Vim zwingen, die Groß- und Kleinschreibung zu ignorieren. Wenn jedoch irgendein Großbuchstabe in Ihrer Suche vorkommt, wird „smartcase“ Vim dazu bringen, die Groß-/Kleinschreibung wieder zu berücksichtigen.

Hinweis: Damit „smartcase“ funktioniert, brauchen Sie zuerst „ignorecase“.

Abschließende Gedanken

Es gibt eine Menge Dinge, die Sie mit Vim ausführen können. Es ist sozusagen der ultimative Texteditor, den Sie jemals brauchen werden. Alles, was Sie brauchen, ist Geduld und etwas Übung.

Viel Spaß damit!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.