Gibt es eine einfache / schnelle Möglichkeit, in das Register "Letzte Suche" von vim ("/)" zu ziehen "?
Aus der vim-Dokumentation geht hervor, dass die Antwort Nein lautet, aber über einen Befehl "let" zugewiesen werden kann:
It is writable with ":let", you can change it to have 'hlsearch' highlight
other matches without actually searching. You can't yank or delete into this
register.
Im Idealfall möchte ich Folgendes tun:
"/5yw
Das würde die nächsten 5 Wörter unter den Cursor ziehen und sie in den letzten Suchpuffer legen
Wenn es alternativ eine Möglichkeit gibt, nach dem Inhalt eines benannten Registers zu suchen, würde dies auch funktionieren. Mit anderen Worten, wenn ich könnte:
"A5yw
und dann nach dem suchen, was sich in Register A befindet, das würde auch funktionieren.
Das nächste, was ich kommen kann, ist, in ein benanntes Register zu ziehen und dieses Register dann in das letzte Suchregister zu kopieren, z
"A5yw
:let @/=@A
Auf die Gefahr hin, eine lange Frage länger zu stellen, möchte ich sagen, dass es nicht immer 5 Wörter sind, die ich "ziehen und suchen" möchte - manchmal sind es 17 Zeichen, manchmal bis zum Ende der Zeile usw. Ein fest codiertes Makro bietet mir also nicht die Flexibilität, die ich mir wünschen würde.
"ayw
würde (in Kleinbuchstaben) der Inhalt des Registers 'a' ersetzt, während"Ayw
an das Register 'a' angehängt wirdWenn Sie kein Register zum Speichern des zerrissenen Textes verwendet haben, verwendet vim das
0
Register. Sie können , indem Sie für die SucheCtrl-R 0
nach/
.Ein komplizierteres Beispiel. Angenommen, Sie möchten in einem anderen Puffer nach dem Text in Anführungszeichen suchen, der sich gerade unter dem Cursor befindet:
yi"
(zerrte inneres Zitat)/Ctrl-R 0
quelle
"Ayw
eine angehängte Zeichenfolge im Register A erzeugt. Aber einfach zu tippenyw
und dannCtrl-R 0
danach zu/
tippen, gibt immer genau das, was ich gerissen habe.Ich verwende dafür folgenden Code:
quelle
Suche nach einer Auswahl:
Wenn Sie zuerst einen Abschnitt einer Linie ziehen möchten, verwenden Sie "v" und bewegen Sie sich mit den Cursorn, bis Sie markiert haben, was Sie möchten. Drücken Sie dann y, um zu ziehen, und jetzt befindet sich die Auswahl in Register 0
Sie können dann eingeben
/Ctrl-R 0
quelle
Also im Grunde eine erweiterte Version der Befehle # und *, oder? Es hört sich so an, als ob Sie einen benutzerdefinierten Operator definieren möchten (einen Befehl, der eine Bewegung erwartet). Ich habe das noch nie gemacht, aber ich habe ein Plugin gefunden, das es vielleicht einfacher macht. Es werden einige Beispiele bereitgestellt.
quelle