Mir ist bewusst, dass ich /einen Regex verwenden kann, um nach etwas zu suchen. Und ich kann ?damit rückwärts suchen. Und ich kann nund verwenden N, um die Suche vorwärts und rückwärts zu wiederholen.
Es gibt auch zwei nette Abkürzungen: *oder #sucht nach dem Wort unter dem Cursor (vorwärts / rückwärts). Das ist sehr nützlich! (es gibt auch g*und g#varianten)
Aber ... Wie kann ich Vim bitten, nach genau diesem Text zu suchen, nachdem ich Text im visuellen Modus ( v) ausgewählt habe ? Ein kurzer Blick auf :help
... hat mir nicht geholfen.
*
und#
! Wäre nett wenn deine Frage auch erklären würde wasg*
und was macheng#
würde;)Antworten:
Die folgende Sequenz macht, was Sie wollen, wenn ein Textblock bereits ausgewählt ist:
"
Register ziehen)"
Register einfügen )(*) Im Modus "Sehr keine Magie" wird der folgende Text als einfacher Text anstatt als regulärer Text interpretiert. Beachten Sie jedoch, dass
\
und/
immer noch etwas Besonderes sind und auf andere Weise behandelt werden müssen. Wenn der Text keine Sonderzeichen enthält, können Sie diesen Schritt überspringen.Quelle: Vim Tips Wiki
quelle
Sie können den hervorgehobenen Text zuerst ziehen. Dann
/
Ctrlr
"
Welches wird einfügen, was Sie nach dem gezerrt haben /.
quelle
/\V<C-r>"
stattdessen tun . Indem Sie\V
Ihre Suchanfrage voranstellen , weisen Sie vim an, "keine Zauberei" zu verwenden. Backslashes können immer noch Probleme verursachen. Siehe:help \V
Ctrl+R
wie Sie auf ein Register zugreifen, und es*
ist einfach das System-Zwischenablage-Register. Sie können beispielsweise auchyaw
Folgendes tun: Ein Wort in das Register"
(das Standardregister) ziehen und dann/<C-r>"
nach dieser Zeichenfolge suchen./
Ihre Suche durchzuführen, verwenden Sie?
stattdessen, da umgekehrte Suchen standardmäßig Schrägstriche ersetzen. Dann können Sie drückenN
, um die Suche in Vorwärtsrichtung fortzusetzen.Ich hatte nie das Bedürfnis nach einer solchen Funktion, aber wenn man bedenkt, dass in Vim eine Funktion benötigt wird, sollte dies meiner Meinung nach helfen:
Ich habe es nicht getestet, aber angesichts des Codes scheint es genau das zu sein, wonach Sie suchen.
quelle
Eine Methode zum Erstellen dieses Verhaltens finden Sie hier im VIM-Wiki .
quelle
vnoremap // y/\V<C-r>=escape(@",'/\')<CR><CR>
Mit dieser Lösung können Sie visuell ausgewählte Kontexte auch mit mehrzeiligen und Escape-Zeichen durchsuchen.
Fügen Sie den folgenden Code in Sie ein
.vimrc
und durchsuchen Sie Ihren visuell ausgewählten Inhalt nach//
. Sie können den ausgewählten Inhalt auch global durch ersetzen/s
. Oder Ersetzen Sie den ausgewählten Kontext lokal durch//
und wählen Sie dann visuell eine Region und aus:'<,'>s//{new_text}
.Bei der obigen Konfiguration geht es nur um die Suche. Alle meine vim-Konfigurationen finden Sie unter .vimrc
quelle
Wenn ich in meinen Konfigurationen auf zwei separaten Computern Text auswähle und dann drücke
/
, wird automatisch nach dem ausgewählten Text gesucht.quelle