Gibt es in Vim eine Möglichkeit, Text in die Suchzeile einzufügen?


105

Ich möchte danach suchen $maximumTotalAllowedAfterFinishund es durch ersetzen $minimumTotalAllowedAfterFinish. Anstatt den Langtext einzugeben:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Gibt es eine Möglichkeit, diese langen Variablennamen in die Suchzeile zu kopieren, da ich in der Befehlszeile nicht " p" zum Einfügen eingeben kann?


2
Ich denke, dass du auch dem ersten entkommen musst, $weil dieses Zeichen das Zeilenende bedeutet.
Luc M

1
@LucM Das OP kann auch eine \Vbeliebige Stelle im Suchmuster verwenden, um "magische" Zeichen zu deaktivieren.
Dash-Tom-Bang

Antworten:


128

Sie können den Inhalt eines nummerierten oder benannten Registers durch Eingabe einfügen CTRLR {0-9a-z"%#:-=.}. Durch Eingabe können CTRL-R CTRL-WSie das aktuelle Wort unter den Cursor einfügen. Sehen:

:he cmdline-editing

für mehr Informationen.


8
Vielen Dank für die Antwort, die häufigste für mich ist: CTRL+ R +(wie es für den Inhalt der Zwischenablage gilt)
Peter Butkovic

4
Das 0Register enthält die zuletzt gezogene Zeichenfolge.
Evgeni Sergeev

52

Kopieren Sie es wie gewohnt und CtrlR"fügen Sie es dann ein. Es gibt viele andere CtrlRVerknüpfungen (z. B. einen Taschenrechner, den aktuellen Dateinamen, den Inhalt der Zwischenablage). Geben Sie ein :help c_<C-R>, um die vollständige Liste anzuzeigen.


15

Kopieren:
1) v(oder mit der Maus im visuellen Modus markieren)
2) y(ziehen)

Einfügen:
1) /(Suchmodus)
2) Ctrl + R + 0(Einfügen aus dem gezogenen Register)


1
Ich habe nach dieser Antwort gesucht, als ich in Google nach dieser Frage gesucht habe. Ich frage mich, warum dies negative Stimmen hat.
Santiago Aristi

14

Geben Sie ein q:, um in einem neuen Puffer in den Verlaufsbearbeitungsmodus zu wechseln. Bearbeiten Sie dann die letzte Zeile des Puffers und drücken Sie Enter, um ihn auszuführen.


3
Dafür war dieser Puffer da! Danke (ich bin immer zufällig darauf gestoßen, als ich
Folgendes eingegeben habe

2
q/ist auch nützlich, um auf den Suchverlauf zuzugreifen und neue Suchanfragen einzufügen.
79E09796

3

Oder erstellen Sie den Befehl in einem vim-Puffer, z. B. geben Sie ihn in den Puffer ein:

s/foo/bar/gci

Und kopieren Sie es in ein benanntes Register mit "ayy(wenn sich der Cursor in dieser Zeile befindet!).

Jetzt können Sie den Inhalt des aRegisters " " über die Ex-Befehlszeile von Vim ausführen mit:

:[OPTIONAL_RANGE]@a

Ich benutze es die ganze Zeit.


Ihr "ayy" wird entweder zitiert (und ist daher falsch) oder nicht (und daher gibt es am Ende ein fehlerhaftes ")
tzot

2

Normalerweise tun Sie dies mit der Maus (möglicherweise CtrlInsoder CtrlCnach der Auswahl) und dann in der Befehls- / Suchzeile mit der mittleren Maustaste (oder ShiftInsoder CtrlV).

Eine andere Möglichkeit besteht darin, Ihre Befehls- / Suchzeile in den Textpuffer zu schreiben, wobei alle in Textpuffern verfügbaren Bearbeitungen beginnen, beginnend mit :und alle, und dann in der Zeile Folgendes tun:

"add@a

Dadurch wird die gesamte Befehlszeile im Puffer gespeichert aund anschließend ausgeführt. Es wird jedoch nicht im Befehlsverlauf gespeichert.

Versuchen Sie, die folgende Zeile im Textpuffer als Beispiel für die obigen Tastendrücke zu erstellen:

:%s/$maximumTotalAllowedAfterFinish/$minimumTotalAllowedAfterFinish/g

Schließlich können Sie eingeben q:, um die Verlaufsbearbeitung in einem Textpuffer einzugeben.


1

Sie können den Cursor auf das Wort setzen, das Sie Ihrem Muster hinzufügen möchten, und dann /oder drücken :, um entweder den Such- oder den Befehlsmodus aufzurufen, und dann drücken, CtrlRCtrlWum das Wort zu kopieren. Quelle

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.