GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Vi- und Vim-Editor:12 leistungsstarke Beispiele zum Suchen und Ersetzen


Foto mit freundlicher Genehmigung:B Zedan

Dieser Artikel ist Teil der fortlaufenden Reihe Vi / Vim Tipps und Tricks. Vim wird allgemein als Texteditor bezeichnet, nicht als Textersteller. Wieso den ? Weil wir viel Zeit damit verbringen, einen bestehenden Text zu bearbeiten, als neuen Text zu erstellen. Bei der Textbearbeitung werden Text-/Musterersetzungen zu einem wichtigen Bestandteil.

In diesem Artikel sehen wir uns an, wie Sie sowohl grundlegende als auch erweiterte Text- und Musterersetzungsfunktionen in Vi und Vim Editor ausführen . Diese Funktionen werden anhand von 12 sehr praktischen und leistungsfähigen Textersetzungsbeispielen erklärt .

Syntax der Textersetzung im vim-Editor:

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]


Folgend sind drei mögliche Flags.

  1. [c] Bestätigen Sie jede Ersetzung.
  2. [g] Alle Vorkommen in der Zeile ersetzen.
  3. [i] Groß-/Kleinschreibung für das Muster ignorieren.

Beispiel 1. Alle Vorkommen eines Textes durch einen anderen Text in der gesamten Datei ersetzen

Dies ist die grundlegende Verwendung der Textersetzung im Vi-Editor. Wenn Sie möchten, dass ein bestimmter Text in der gesamten Datei durch einen anderen Text ersetzt wird, können Sie die folgende Sequenz verwenden.

:%s/old-text/new-text/g

  • %s – gibt alle Zeilen an. Die Angabe des Bereichs als „%“ bedeutet, dass die gesamte Datei ersetzt wird.
  • g – gibt alle Vorkommen in der Zeile an. Mit dem 'g'-Flag können Sie die gesamte Zeile ersetzen lassen. Wenn dieses 'g'-Flag nicht verwendet wird, wird nur das erste Vorkommen in der Zeile ersetzt.

Beispiel 2. Ersetzung eines Textes durch einen anderen Text innerhalb einer Zeile

Wenn Sie möchten, dass ein bestimmter Text innerhalb einer einzelnen Zeile ohne Berücksichtigung der Groß-/Kleinschreibung durch einen anderen Text ersetzt wird. Wenn kein Bereich angegeben wird, erfolgt die Ersetzung nur in der aktuellen Zeile. Mit dem 'i'-Flag können Sie den Ersatzsuchtext so einstellen, dass die Groß-/Kleinschreibung nicht beachtet wird.

:s/I/We/gi

Beispiel 3. Ersetzung eines Textes durch einen anderen Text innerhalb eines Zeilenbereichs

Mit dem Bereich können Sie nur einen Bereich der Zeile festlegen, der von der Substitution betroffen sein soll. Die Angabe 1, 10 als Bereich bedeutet, Substitution nur in den Zeilen 1 – 10 vorzunehmen.

:1,10s/helo/hello/g

Beispiel 4. Ersetzen eines Textes durch einen anderen Text durch visuelle Auswahl von Zeilen

Sie können auch bestimmte Zeilen auswählen, indem Sie diese Zeilen visuell auswählen. Drücken Sie STRG + V im Befehlsmodus, verwenden Sie die Navigationstasten, um den Teil der Datei auszuwählen, den Sie ersetzen möchten. Drücken Sie ':', das automatisch als :'<,'> gebildet wird. Dann können Sie den normalen Ersatz als

verwenden
:'<,'>s/helo/hello/g

Beispiel 5. Ersetzung eines Textes durch einen anderen Text nur die 1. X Zeilenanzahl

Verwenden der Anzahl in der Substitution. Wenn Sie die Anzahl N in der Substitution angeben, bedeutet dies, dass die Substitution in N Zeilen von der aktuellen Position des Cursors ausgeführt wird. Substitution in 4 Zeilen ab der aktuellen Zeile vornehmen.

:s/helo/hello/g 4

Beispiel 6. Ersetzen Sie nur das ganze Wort und keine teilweise Übereinstimmung

Nehmen wir an, Sie wollen im unten erwähnten Originaltext nur das ganze Wort „his“ in „her“ ändern. Wenn Sie die Standardersetzung vornehmen, wird neben der Änderung von his zu ihr auch This zu Ther geändert, wie unten gezeigt.

Standardersatz

Original Text: This is his idea

:s/his/her/g

Translated Text: Ther is her idea

Ersetzung ganzer Wörter

Original Text: This is his idea

:s/\<his\>/her/

Translated Text: This is her idea

Hinweis: :Sie sollten das Wort mit einschließen, wodurch die Ersetzung gezwungen wird, nur nach dem vollständigen Wort und nicht nach teilweisen Übereinstimmungen zu suchen.

Beispiel 7. Ersetzen Sie entweder Wort1 oder Wort2 mit einem neuen Wort unter Verwendung eines regulären Ausdrucks

Im folgenden Beispiel werden alle Vorkommen von „good“ oder „nice“ durch „great“ ersetzt.

Original Text: Linux is good. Life is nice.

:%s/\(good\|nice\)/awesome/g

Translated Text: Linux is awesome. Life is awesome.


Sie können auch Ersetzungen vornehmen, indem Sie einen regulären Ausdruck angeben. Im folgenden Beispiel wird hey oder hi durch hai ersetzt. Bitte beachten Sie, dass dies keinen Ersatz für die Wörter „they“, „this“ darstellt.

:%s/\<\(hey\|hi\)\>/hai/g

  • \<– Wortgrenze.
  • \| – „logisches Oder“ (in diesem Fall hey oder hi)

Beispiel 8. Interaktives Suchen und Ersetzen im Vim-Editor

Sie können ein interaktives Suchen und Ersetzen durchführen, indem Sie das „c“-Flag in der Ersetzung verwenden, das Sie um eine Bestätigung bittet, um die Ersetzung vorzunehmen oder sie zu überspringen, wie unten erläutert. In diesem Beispiel führt der Vim-Editor eine globale Suche nach dem Wort „awesome“ durch und ersetzt es durch „wonderful“. Aber es wird die Ersetzung nur basierend auf Ihrer Eingabe vornehmen, wie unten erklärt.

:%s/awesome/wonderful/gc

replace with wonderful (y/n/a/q/l/^E/^Y)?
  • y – Ersetzt das aktuell markierte Wort. Nach dem Ersetzen wird automatisch das nächste Wort hervorgehoben, das dem Suchmuster entspricht
  • n – Ersetzt nicht das aktuell markierte Wort. Aber es wird automatisch das nächste Wort hervorheben, das dem Suchmuster entspricht
  • a – Ersetzt automatisch alle hervorgehobenen Wörter, die den Suchkriterien entsprechen.
  • l – Dies ersetzt nur das aktuell markierte Wort und beendet den Such- und Ersetzungsvorgang.

Beispiel 9. Ersetzen aller Zeilen durch ihre Zeilennummer.

Wenn die Zeichenfolge mit „\=“ beginnt, sollte sie als Ausdruck ausgewertet werden. Mit der Funktion „line“ können wir die aktuelle Zeilennummer erhalten. Durch die Kombination beider Funktionalitäten übernimmt die Substitution die Zeilennummerierung aller Zeilen.

:%s/^/\=line(".") . ". "/g


Hinweis: Dies unterscheidet sich von „:set number“, wo die Zeilennummern nicht in die Datei geschrieben werden. Aber wenn Sie diese Ersetzung verwenden, machen Sie diese Zeilennummer dauerhaft in der Datei verfügbar.

Beispiel 10. Sonderzeichen durch seinen entsprechenden Wert ersetzen.

Ersetzen von ~ durch den $HOME-Variablenwert.

Original Text: Current file path is ~/test/

:%s!\~!\= expand($HOME)!g

Translated Text: Current file path is /home/ramesh/test/

Sie können die Erweiterungsfunktion verwenden, um alle verfügbaren vordefinierten und benutzerdefinierten Variablen zu verwenden.

Beispiel 11. Ändern Sie die Sequenznummer in einer nummerierten Liste, während Sie ein neues Element einfügen

Angenommen, Sie haben eine nummerierte Liste wie die folgende in einer Textdatei. Nehmen wir in diesem Beispiel an, dass Sie nach Artikel 2 eine neue Zeile hinzufügen möchten. Dazu sollten Sie die Anzahl aller anderen Artikel entsprechend ändern.

vi / vim tips & tricks series
Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option
Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File
Article 3: 5 Awesome Examples For Automatic Word Completion Using Ctrl-X
Article 4: Vi and Vim Macro Tutorial: How To Record and Play
Article 5: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
Article 6: How To Add Bookmarks Inside Vim Editor
Article 7: Make Vim as Your Bash-IDE Using bash-support Plugin
Article 8: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map
Article 9: 8 Essential Vim Editor Navigation Fundamentals
Article 10: Vim Editor: How to Correct Spelling Mistakes Automatically
Article 11: Transfer the Power of Vim Editor to Thunderbird for Email
Article 12: Convert Vim Editor to Beautiful Source Code Browser


Der dritte Artikel „Machen Sie Vim als Ihre Perl-IDE mit dem Plugin perl-support.vim“ wurde übersehen. Wenn Sie es also
hinzufügen möchten, ändern Sie „Artikel 3“ in „Artikel 4“, „Artikel 4“ in „Artikel 5“ und „Artikel 12“ in „Artikel 13“.

Dies kann durch den folgenden vim-Ersetzungsbefehl erreicht werden.

:4,$s/\d\+/\=submatch(0) + 1/

  • Bereich:4,$ – 4. Zeile bis letzte Zeile.
  • Suchmuster – \d\+ – Ziffernfolge
  • Zu ersetzendes Muster – \=submatch(0) + 1 – erhält das übereinstimmende Muster und fügt ihm 1 hinzu.
  • Flag – da es kein Flag gibt, ersetzt es standardmäßig nur das erste Vorkommen.


Nach Ausführung der Ersatzanweisung sieht die Datei so aus, in der Sie
den 3. Artikel hinzufügen können.

vi / vim tips & tricks series
Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option
Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File
Article 4: 5 Awesome Examples For Automatic Word Completion Using Ctrl-X
Article 5: Vi and Vim Macro Tutorial: How To Record and Play
Article 6: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
Article 7: How To Add Bookmarks Inside Vim Editor
Article 8: Make Vim as Your Bash-IDE Using bash-support Plugin
Article 9: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map
Article 10: 8 Essential Vim Editor Navigation Fundamentals
Article 11: Vim Editor: How to Correct Spelling Mistakes Automatically
Article 12: Transfer the Power of Vim Editor to Thunderbird for Email
Article 13: Convert Vim Editor to Beautiful Source Code Browser

Hinweis:Überprüfen Sie, ob die Substitution die 3 in 4, 4 in 5 usw. geändert hat. Jetzt können wir eine neue Zeile hinzufügen, in der es als Artikel 3 erwähnt wird, und müssen keine manuellen Änderungen vornehmen.

Beispiel 12. Ersetzen der Satzanfänge durch Großbuchstaben. (d.h. Titel Groß-/Kleinschreibung das gesamte Dokument).

Beim Formatieren eines Dokuments ist es auch wichtig, den Titel groß zu schreiben. Das geht ganz einfach mit Substitution.

:%s/\.\s*\w/\=toupper(submatch(0))/g

  • \.\s*\w – Suchmuster – Literal . ( Punkt ) gefolgt von Null oder mehr Leerzeichen und einem Wortzeichen.
  • toupper – wandelt den angegebenen Text in Großbuchstaben um.
  • submatch(0) – gibt das übereinstimmende Muster zurück.

Text vor Ersetzung:

Lot of vi/vim tips and tricks are available at thegeekstuff.com. reading
these articles will make you very productive. following activities can be
done very easily using vim editor.
        a. source code walk through,
        b. record and play command executions,
        c. making the vim editor as ide for several languages,
        d. and several other @ vi/vim tips & tricks.

Text nach Ersetzung (Änderungen sind fett gedruckt)

Lot of vi/vim tips and tricks are available at thegeekstuff.com. Reading
these articles will make you very productive. Following activities can be
done very easily using vim editor.
        a. Source code walk through,
        b. Record and play command executions,
        c. Making the vim editor as ide for several languages,
        d. And several other @ vi/vim tips & tricks.

Empfohlene Lektüre

Vim 101 Hacks, von Ramesh Natarajan . Ich bin ein Kommandozeilen-Junkie. Also bin ich natürlich ein großer Fan von Vi- und Vim-Editoren. Vor einigen Jahren, als ich viel C-Code unter Linux geschrieben habe, habe ich alle verfügbaren Vim-Editor-Tipps und -Tricks gelesen. Basierend auf meiner Vim-Editor-Erfahrung habe ich das Vim 101 Hacks eBook geschrieben, das 101 praktische Beispiele zu verschiedenen erweiterten Vim-Funktionen enthält, die Sie im Vim-Editor schnell und produktiv machen werden. Auch wenn Sie Vi und Vim Editors seit mehreren Jahren verwenden und dieses Buch noch nicht gelesen haben, tun Sie sich bitte einen Gefallen und lesen Sie dieses Buch. Sie werden von den Möglichkeiten des Vim-Editors begeistert sein.

Tolle Vim-Editor-Artikel

Im Folgenden finden Sie einige großartige Vi/Vim-Editor-Tutorials die Sie vielleicht hilfreich finden.

  • Vi- und Vim-Makro-Tutorial:Aufnehmen und Abspielen
  • Turboladen Sie den Firefox-Browser mit der Vim-Editor-Funktionalität mit dem Vimperator-Add-on auf
  • Tutorial:Erstellen Sie Vim als Ihre C/C++-IDE mit dem c.vim-Plugin
  • Vim Editor in einen schönen Quellcode-Browser für jede Programmiersprache umwandeln

Hinweis: Bitte abonnieren Sie The Geek Stuff und verpassen Sie keine zukünftigen Tipps und Tricks für Vi- und Vim-Editoren .


Linux
  1. Unterschiede zwischen Vi- und Vim-Texteditoren erklärt

  2. ViM Texteditor 101 Handbuch

  3. Verwenden von Sed-, Ex- und Perl-Befehlen zum Suchen und Ersetzen eines Textes in Linux

  4. vim Tutorial mit Befehlsbeispielen

  5. Xed Texteditor – Ein Ersatz für Gedit und Pluma

So suchen und ersetzen Sie Text, Wort oder Zeichenfolge in einer Datei

50 einfache und nützliche Beispiele für den Find-Befehl in Linux

So finden und ersetzen Sie Text in Vim

Vi und Vim Editor:5 fantastische Beispiele für die automatische Wortvervollständigung mit Ctrl-X Magic

3 leistungsstarke Musketiere des Vim-Editors – Makro, Markierung und Karte

Arbeiten mit dem Vim-Editor (Text-Editor)