In der Praxis führe ich häufig Suchvorgänge durch, um zu einem Wort oder einer Phrase zu springen, anstatt dort mit zu navigieren h/j/k/l
. Dann habe ich getroffen, n
um zwischen den Ereignissen zu hüpfen.
Angenommen, ich habe folgenden Text:
Time flies like an arrow; fruit flies like a banana. - Groucho Marx
Ich tippe /an arrow
und drücke Enter. Dieser Satz wird hervorgehoben, und ich springe mit zu ihm n
.
Jetzt möchte ich diesen Text visuell auswählen , möglicherweise ändern oder löschen. (Ja, mir ist der :s
Ersetzungsbefehl bekannt.)
Da sich mein Cursor am Anfang eines Pfeils auf dem Buchstaben "a" befindet, kann ich ein paar Mal v
drücken e
, um die gesamte Phrase hervorzuheben. Aber ich habe das Gefühl, dass es einen kürzeren und semantischeren Weg gibt. Immerhin habe ich den Text, der mich interessiert, bereits angegeben.
Wie kann ich einen Befehl erstellen, der besagt, dass die aktuelle Suchauswahl visuell ausgewählt wird?
gn
genau fest ("das nächste Suchergebnis visuell auswählen") und erfüllt genau die gestellten Anforderungen. Wenn Sie es als separate Antwort einreichen, wird betont, dass es ein vollständiger Ersatz für istv//e
. Ich habe gerade meine Antwort bearbeitet, um Dokumentation hinzuzufügen. Ist das besser?Versuche dies:
Es geht in den visuellen Modus, wiederholt die letzte Suche und wählt bis zum Ende.
quelle
gn
funktioniert dies auch (ohne dien
Mittel zu ändern )Ich habe festgestellt, dass dies
v//e
allein nicht ausreicht, da der Cursor nach dem Verlassen des visuellen Modus beim Springen zum nächsten / vorherigen Suchergebnis am Ende des Ergebnisses und nicht am Anfang steht, wie Sie es normalerweise erwarten würden.Um dies zu beheben, sollten wir zuerst an das Ende des Suchergebnisses springen (
//e
) und dann visuell an den Anfang auswählen (v??
):Prost.
quelle
nnoremap g? ??b<cr>v//e<cr>
(macht dasselbe, sucht aber rückwärts statt vorwärts)Es gibt jetzt ein Vim-Search-Objects-Plugin , mit dem Vim Such-Übereinstimmungen als normale Textobjekte behandelt, sodass Sie
va/
nach einer Suche einfach eine Übereinstimmung visuell auswählen können.quelle
Eine "dumme" Möglichkeit, dies zu tun, besteht darin, eine Taste (in diesem Fall F5) wie folgt zuzuordnen:
Nachdem Sie
/an arrow
F5 gedrückt haben.quelle
+1
. Lassen Sie das weg und es wird nur der Teil ausgewählt, nach dem gesucht wurde. Auf der anderen Seitennoremap <F5> v//e<CR>
scheint es gut zu funktionieren.x
oder drücke,c
nachdem ich dies getan habe, wirdF5
jedoch ohne die+1
gesamte Suchzeichenfolge, einschließlich des Zeichens unter dem Cursor, gelöscht.