2009-09-25 17 views
12

Digamos que tengo una palabra seleccionada en modo visual. Me gustaría realizar una sustitución en esa palabra y todas las demás instancias de esa palabra en un archivo utilizando s //. ¿Hay alguna manera de utilizar el texto resaltado en la parte s/<here>/stuff/ sin tener que volver a escribirlo?En VIM, ¿es posible usar el texto seleccionado en la cláusula sustituta sin volver a escribirlo?

+0

Siempre me ha parecido molesto que la línea de comandos de vim no tenga acceso a ningún registro, etc. – inkedmn

+0

Estoy de acuerdo con eso. Eso haría una gran diferencia. –

+4

@inkedmn: ¿Qué quieres decir con que no tiene acceso a los registros? ctrl-r claramente le permite acceder a los registros de copiar/pegar. –

Respuesta

17

Claro. Si ha seleccionado la palabra, sólo "y" ank, y luego escriba:

:%s/<ctrl-r>"/something else/g 

Dónde está presionando tecla CTRL con la tecla r, y "es simplemente" carácter.

Todas las pulsaciones de teclas:

y:%s/<ctrl-r>"/what to put/g<enter> 
+0

Wow, cool! ¿Dónde puedo encontrar ese truco en la documentación de vim? – innaM

+0

No estoy seguro. Ctrl-r es algo bastante conocido. –

+0

@Manni:: h c_CTRL-R –

4

Si ha buscado para su texto antes de poder utilizar

CTRL-R/

para insertar el último elemento de búsqueda en su búsqueda y reemplazo de cadenas.

Puede comprobar esta página para otros trucos similares:

http://www.vim.org/htmldoc/insert.html

0

Otra forma de acceder a contenidos del registro de la línea de comandos es a través de @ variables. Entonces, si quitas el texto en el registro predeterminado, estará en una variable llamada @".

:exe '%s/' . @" . '/stuff/' 

Aquí hay un mapeo para hacer esto fácil para escribir:

vmap <Leader>s y:exe '%s/' . @" . '//g'<Left><Left><Left> 

Ahora se puede destacar algo en el modo visual, tipo \s, escriba su reemplazo y golpear Enter. Versión depesz 's también hace un buen mapeo (casi exactamente como se lo haya escrito):

vmap <Leader>s y:%s/<c-r>"//g<Left><Left> 
4

Usted no tiene que tirar de la palabra, coloque el cursor sobre la palabra y luego:

:%s/<C-r><C-w>/bar/g
+0

¡Dulce! ¡Ese es otro sobre el que tenía curiosidad! –

Cuestiones relacionadas