In VIM ist es möglich, den ausgewählten Text in der Ersatz-Klausel zu verwenden, ohne es erneut eingeben?
-
16-09-2019 - |
Frage
Lassen Sie uns sagen, dass ich ein Wort im visuellen Modus ausgewählt haben. Ich mag eine Substitution an diesem Wort und alle anderen Instanzen dieses Wortes in einer Datei // s unter Verwendung auszuführen. Gibt es einen Weg, um den markierten Text in dem s/<here>/stuff/
Teil zu verwenden, ohne dass es erneut eingeben?
Lösung
Klar. Wenn Sie das Wort ausgewählt, nur „y“ ank, und dann Typ:
:%s/<ctrl-r>"/something else/g
Wo drückt Strg-Taste mit Taste r, und „nur“ Charakter.
Alle Tastenfolgen:
y:%s/<ctrl-r>"/what to put/g<enter>
Andere Tipps
Wenn Sie Ihren Text gesucht, bevor Sie verwenden können,
STRG + R /
die letzte Suchbegriff in der Suche ein und String ersetzen.
Sie können prüfen, diese Seite für andere ähnliche Tricks:
Sie haben das Wort nicht reißen, setzen Sie den Cursor auf das Wort und dann:
:%s/<C-r><C-w>/bar/g
Eine andere Möglichkeit, Inhalte von der Kommandozeile für den Zugriff auf Register wird über @
Variablen. Also, wenn Sie Text in das Standardregister zerren, wird es in einer Variablen namens @"
sein.
:exe '%s/' . @" . '/stuff/'
Hier ist eine Abbildung dieser leicht zu machen eingeben:
vmap <Leader>s y:exe '%s/' . @" . '//g'<Left><Left><Left>
Jetzt können Sie etwas im visuellen Modus, geben Sie \s
markieren, geben Sie Ihren Ersatz und traf Enter
. depesz 's-Version macht auch eine gute Mapping (fast genau so, wie er es getippt):
vmap <Leader>s y:%s/<c-r>"//g<Left><Left>