
Al usar Vim, a veces me encuentro mirando una sección del código fuente por un tiempo y de repente quiero que aparezca alguna variable en la pantalla. Eso es fácil: /<var>
lo que los resalta a todos. Mi problema es que la mayoría de las veces la búsqueda cambia mi ventana, por lo que no veo el código fuente desde el mismo lugar. Incluso si solo se ha movido unas pocas líneas, todavía me desconcierta ya que necesito tomarme unos segundos para descubrir dónde se han movido las cosas.
¿Es posible resaltar un término de búsqueda sin mover el cursor a la siguiente coincidencia?
Respuesta1
http://vim.wikia.com/wiki/VimTip1572
Si utilizó este complemento, simplemente puede habilitar la funcionalidad
\metro
luego use una tecla del teclado numérico para asignar un color a esa palabra en todas partes sin mover el cursor.
1
Puede utilizar muchos resaltados diferentes a la vez para muchas palabras diferentes o patrones de búsqueda más complejos si lo desea.
Respuesta2
la respuesta de skybluemuestra el núcleo de la idea de cómo utilizar el resaltado de búsqueda normal para lograr lo que desea.
Extendí esa técnica haciendo una combinación de teclas que funciona de manera similar a la*
dominio, pero sin pasar al siguiente partido.
Mi agradecimiento va agaryjohnpor señalar elexpand()
equivalente a *
la selección de palabras de 's (para evitar *
su uso y restaurar la vista). Esto simplifica el código lo suficiente como para que pueda ir directamente en el mapeo (evita el uso de una función). También agregué un mapeo que coincide con palabras parciales (como g*
).
:" The leader defaults to backslash, so (by default) this
:" maps \* and \g* (see :help Leader).
:" These work like * and g*, but do not move the cursor and always set hls.
:map <Leader>* :let @/ = '\<'.expand('<cword>').'\>'\|set hlsearch<C-M>
:map <Leader>g* :let @/ = expand('<cword>')\|set hlsearch<C-M>
Respuesta3
También puede configurar el registro de búsqueda en la variable que desea hacer coincidir.
Primero, asegúrese de que el resaltado de búsqueda esté activado:
:set hlsearch
Luego, puede configurar el registro de búsqueda con:
:let @/="variable"
Esto resaltará todas las apariciones de variables sin saltar a la siguiente coincidencia.
Para más información, ver:help @/
Respuesta4
Además de:
:set hlsearch
Es posible que desee:
: set noincsearch