2011-12-21 13 views

Respuesta

17

En el modo de inserción puede utilizar CTRL-R para insertar los contenidos de los registros de Vim. De forma predeterminada, el texto copiado se coloca en el registro sin nombre ", por lo que para insertar ese texto debe escribir <C-R>" en modo insertar. El indicador de búsqueda usa Command-line mode que tiene su propio CTRL-R que funciona de manera casi idéntica al modo Insertar.

Así que si me acaba de tirar el texto foo, escribiendo /<C-R>" buscaría el texto foo una vez que presione enter.

+0

gracias, funciona bien :) –

+1

hablando estrictamente esto no está en la inserción modo, pero en modo de línea de comando. Y sobre esto: [ver esta otra respuesta] (http://stackoverflow.com/questions/3997078/how-to-paste-text-into-vim-command-line/3997110#3997110) que explica sobre registros más en profundidad . – Benoit

+0

@Benoit Sabía que debe haber algún nombre para ese modo. Actualizado mi respuesta. –

2

tengo este mapeo definido en mi vimrc, que mapea * a definir el patrón de búsqueda como lo que se encuentra resaltada (escape todos los caracteres peligrosos potenciales, y la conversión de un espacio en el que se pone de relieve a cualquier secuencia de espacios)

xnoremap * :<C-U>let old_reg=getreg('"')|let old_regtype=getregtype('"')<CR>gvy/<C-R><C-R>=substitute(substitute(escape(@", '/\.*$^~['), '\s\+', '\\s\\+', 'g'), '\_s\+', '\\_s*', 'g')<CR><CR>gV:call setreg('"', old_reg, old_regtype)<CR>:let v:searchforward=1<CR> 

para usarlo, iniciar el modo visual con v, y luego resaltar lo que desea buscar y pulse * no y.

Por supuesto puede asignar # para buscar hacia atrás (exactamente igual excepto que v:searchforward se debe establecer en 0.

1
:set hls 
:vmap * y:let @/ = @"<CR> 
  • set hls (altura de búsqueda de luz)
  • v =>hjkl (seleccione algo)
  • presione *, copie el texto seleccionado a reg "
  • contenido conjunto de reg / como "
  • prensa n/N para navegar
0

Si solo le importan las búsquedas, puede usar el método truco que uso. Un tirón a través de una palabra v o y + w , a continuación, ejecute el comando

:%s//XYZ/gc 

Esto buscará la última palabra buscada. Luego, cuando lo encuentre, le pedirá confirmación para reemplazarlo por XYZ, y todo lo que tiene que hacer es presionar q para salir.

Cuestiones relacionadas