2010-11-30 13 views
27

Me encuentro a menudo repitiendo el siguiente patrón de operaciones.¿Hay un comando vim para seleccionar texto pegado?

Normalmente voy al modo visual, selecciono algunas líneas o bloque. Luego los arranco usando y, y los pegar usando p o P. El siguiente paso es seleccionar el texto pegado, reemplazar una variable o nombre de función o cambiar la sangría.

Sé que puedo usar gv para volver a seleccionar el "origen" pero lo que me gustaría es un comando similar para seleccionar el "destino".

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

pero sólo es útil cuando se va a sustituir una selección por el contenido del registro, no cuando se está insertando un bloque completamente nuevo.

Respuesta

42

Usted está buscando

`[v`] 
+0

Guau, no sabía de estas marcas, realmente eres un gurú, Luc. – Benoit

+1

He reasignado eso a 'gp' y funciona perfectamente. Esto es genial porque no creo que hubiera podido extraer esa información de: ¡ayuda! ¡Gracias! Y es genial cambiar la sangría después de copiar también. –

+0

:) He descubierto y usado '' ['hace algunos años en mi plugin de plantilla-expansor. Esa no es una marca que uso todos los días. Es difícil recordarlos a todos. –

8

prefiero la siguiente asignación simple de la función de Benoit

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

Más información sobre la expresión de los mapas:

:h :map-expression 

Como @ZyX señaló la strpart no es necesario y se puede volver a escribir como:

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

Sí, sin embargo, tengo algunas dudas sobre si funcionará con la selección en bloque cuando la selección es mayor que la última línea. – Benoit

+0

@Benoit No lo dudes, solo prueba. Debería funcionar con 'set virtualedit + = block', y tenga en cuenta que cuando pegue blockwise selection vim llenará la longitud faltante con espacios, por lo que nunca obtendrá una situación donde' set virtualedit' es requerido (a menos que de alguna manera elimine estos espacios después de pegar sin modificar [] marcas). – ZyX

Cuestiones relacionadas