2012-02-13 8 views
16

Usando * de búsqueda cuando el cursor está en una palabra theWord, vim salta directamente a la siguiente aparición de exactamente esa palabra, es decir performes /\<theWord\>.Añadir palabra bajo el cursor al patrón

Preguntas:

¿Hay una manera de añadir otra palabra otherWord a la búsqueda, cuando el cursor se encuentra en esta otra palabra, de tal manera que uno performes /\<theWord\>\|\<otherWord\>?

+1

Fuera de tema, pero gracias por informarme sobre este sencillo atajo. Aprendo todos los días con vim :-) –

+2

@FlorianMargaine: No estás solo;) Solo echa un vistazo a esto: http://www.rayninfo.co.uk/vimtips.html – ezdazuzena

Respuesta

13

intentar algo como:

  1. * (Para buscar una palabra)
  2. trasladarse a otro
  3. :let @/[email protected]/.'\|\<'.expand("<cword>").'\>' esto añade a la anterior patrón de búsqueda la palabra actual bajo el cursor) en algún lugar con un poco de delimitadores (\| y los límites de palabras ...)
  4. si lo desea, configure una tecla de acceso directo para ello, como: nnoremap <F4> :let @/.='\\|\<'.expand("<cword>").'\>'<CR>
+0

Greate !! Exactamente lo que estaba buscando, en particular 4.)! Por favor, ponga otro escape '\' antes de '\ |', es decir '\\ |' para que funcione. – ezdazuzena

+1

Necesitaba 'nmap : dejar @/= @ /. '\\ | \ <'. Expand (" "). '\>' '. Entonces doble barra invertida antes del tubo –

+0

Siempre debe preferir 'nnoremap' a' nmap' cuando sea posible. Y por cierto, ': let' admite'. = 'Ahora. –

6

Trate

:nnoremap <silent> + :let @/ .= '\\|\<'.expand('<cword>').'\>'<cr>n 

Que se añada la palabra bajo el cursor en el registro de búsqueda cuando '+' es golpeado, y salta a la * n * ext ocurrencia de cualquier patrón buscado.

Si desea extenderlo al modo visual, (como it could be done to n_star), tiene

:vnoremap <silent> + <c-\><c-n>:let @/ .= '\\|'.escape(lh#visual#selection(), '/\^$*.[~')<cr>n 

Con lh#visual#selection() a buscar a la selección actual, y escape() neutralizar algunos personajes activos en expresiones regulares. v_CTRL-\_CTRL-N siendo una secuencia de escape segura y silenciosa.

+0

Cualquier explicación sobre lo que estás haciendo aquí sería muy apreciado. No solo quiere copiar y pegar algo. ¡Aclamaciones! – ezdazuzena

+3

El comando ': help' permite preguntar precisiones sobre lo que no sabes, ->': h nnoremap', ': h: let',': h. = ',': H expand() ' o ': hn',': h @/' NB: concluye el modo de comando. –

+0

Y es por eso que se llama respuesta y no sugerencia? ;) – ezdazuzena

Cuestiones relacionadas