2010-11-30 7 views
27

Ich wiederhole oft das folgende Betriebsmuster.Gibt es einen vim-Befehl, um eingefügten Text auszuwählen?

Ich gehe normalerweise in den visuellen Modus, wählen Sie einige Zeilen oder blockieren. Dann riss ich sie mit y, und fügen Sie sie unter Verwendung oder P. Der nächste Schritt besteht darin, den eingefügten Text auszuwählen, einen Variablen- oder Funktionsnamen zu ersetzen oder den Einzug zu ändern.

Ich weiß, dass ich gv verwenden kann, um den "Ursprung" erneut auszuwählen, aber was ich möchte, ist ein ähnlicher Befehl, um das "Ziel" auszuwählen.

:help gv erwähnt:
After using "p" or "P" in Visual mode the text that
was put will be selected.

aber es ist nur dann sinnvoll, wenn Sie eine Auswahl durch den Inhalt des Registers zu ersetzen, nicht, wenn Sie einen ganz neuen Block einfügen.

Antwort

42

Sie suchen

`[v`] 
+0

Wow, kannte diese Marken nicht, du bist wirklich ein Guru, Luc. – Benoit

+1

Ich habe das zu 'gp' umbenannt und es funktioniert perfekt. Das ist großartig, denn ich glaube nicht, dass ich diese Information ausgraben könnte: Hilfe! Vielen Dank! Und es ist großartig, den Eindruck nach dem Kopieren zu ändern. –

+0

:) Ich habe entdeckt und verwendet ''ein paar Jahre zurück in meinem Template-Expander-Plugin. Das ist kein Zeichen, das ich jeden Tag benutze. Es ist schwer, sich an alle zu erinnern. –

8

ich folgende einfache Zuordnung zu Benoit Funktion bevorzugen

nnoremap <expr> g<c-v> '`[' . strpart(getregtype(), 0, 1) . '`]' 

Erfahren Sie mehr über die Expression abbildet:

:h :map-expression 

Wie @ZyX wies darauf hin, die strpart wird nicht benötigt und kann wie folgt umgeschrieben werden:

nnoremap <expr> g<c-v> '`[' . getregtype()[0] . '`]' 
+0

Ja, ich habe jedoch einige Zweifel, ob es mit blockweiser Auswahl funktioniert, wenn die Auswahl größer ist als die letzte Zeile? – Benoit

+0

@Benoit Zweifeln Sie nicht, nur testen. Es sollte mit 'set virtualedit + = block' arbeiten, und beachten Sie, dass vim beim Einfügen blockweiser Auswahl die fehlende Länge mit Leerzeichen füllt, so dass Sie nie eine Situation erhalten, in der' set virtualedit' erforderlich ist (es sei denn, Sie haben diese Leerzeichen nach dem Einfügen ohne Änderung entfernt) [] markiert). – ZyX

Verwandte Themen