2 Stimmen

Vim globaler Befehl, um jede Zeile, die ein Symbol enthält, mit einem Wort beginnen zu lassen

Betrachten Sie die folgende Textdatei:

something
something
something = someother thing
other thing = third thing
another thing = forth thing

Ich möchte, dass es so aussieht:

something
something
keyword something = someother thing
keyword other thing = third thing
keyword another thing = forth thing

so dass ich jeder Zeile, die ein Gleichheitszeichen enthält, ein Schlüsselwort hinzufüge. Kann ich dies mit einem globalen Befehl tun, oder wie empfehlen Sie, dass ich dies tun sollte?

6voto

William Pursell Punkte 188248
:g/=/s/^/keyword /

o

:g/=/normal ikeyword

Beachten Sie das Leerzeichen nach "Schlüsselwort".

Für diese Art von Problemen ist es auch üblich, eine Lösung wie diese zu verwenden:

:%!sed '/=/s/^/keyword /'

0voto

mvanveen Punkte 9198

Ich bin mir nicht ganz sicher, was Sie damit bezwecken wollen. Ihr Titel suggeriert ein gemeinsames Muster, aber ich sehe keins in Ihrem Beispiel. Also zeige ich Ihnen beides.

Änderungen unter Dingen mit einem gemeinsamen Muster vornehmen

Sie können Suchen und Ersetzen wie folgt durchführen:

:s/<regex you are searching for>/<string to replace with>/g

s/pattern/replacement/ sucht und ersetzt, und das zusätzliche g überträgt die Änderungen

Mehrzeilige Bearbeitung

Mit Vim können Sie auch mehrere Zeilen auf einmal bearbeiten. Angenommen, Sie wollen die folgenden drei Zeilen editieren:

something = someother thing
other thing = third thing
another thing = fourth thing
  1. Setzen Sie den Cursor auf das Feld s beim ersten something Linie.
    Presse <ctrl>-v außerhalb des Einfügemodus, um in den visuellen Modus zu wechseln.
  2. Blättern Sie nach unten zum a auf das Endergebnis. Alle drei Anfangszeichen aller 3 Zeilen sollten hervorgehoben werden.
  3. Presse A zum Anhängen oder I um direkt in den Einfügemodus zu gelangen und mit der Eingabe zu beginnen. Wenn Sie die Escape-Taste drücken, sollten Ihre Änderungen übernommen werden! Sie können auch andere Befehle ausführen wie y y d , usw.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X