última - trucos de vim




Vim borrar la última búsqueda resaltando (20)

Desactivar la búsqueda resaltando permanentemente

Las coincidencias no se destacarán cada vez que realice una búsqueda con /

:set nohlsearch

Borrar resaltado hasta la próxima búsqueda

:noh

o :nohlsearch (se borra hasta que se presiona n o N )

Resaltar resaltado al presionar ESC

nnoremap <esc> :noh<return><esc>

Resaltar resaltado al presionar otra tecla o mapa personalizado

  • Borrar resaltados al presionar \ (barra invertida)

    nnoremap \ :noh<return>
    
  • Claro resaltados al golpear ESC dos veces

    nnoremap <esc><esc> :noh<return>
    

Después de hacer una búsqueda en Vim, se resaltan todas las apariciones. ¿Cómo puedo deshabilitar eso? Ahora hago otra búsqueda de algo incomprensible que no se puede encontrar.

¿Hay una manera de simplemente desactivar temporalmente el resaltado y volver a habilitarlo cuando sea necesario otra vez?


A mi manera: busca cualquier palabra no existente, como / aaaaaaa, y el mundo se calma de inmediato ~


Busque una secuencia de caracteres poco probable (mash las claves en la fila de inicio):

/;alskdjf;

Esto funciona en vim y menos, y es más fácil de recordar / escribir que la solución lógicamente más limpia de @ ShaunBouckaert "para borrar el último patrón de búsqueda utilizado":

:let @/ = ""

Un inconveniente potencial es que agrega basura a su historial de búsqueda.


Creo que mezclar @ShaunBouckaert y Mar 19 '09 a las 16:22 respuestas es un buen compromiso:

" Reset highlighted search
nnoremap <CR> :let @/=""<CR><CR>

Presione Entrar y el texto resaltado ya no estará resaltado, mientras que el resaltado de búsqueda aún estará habilitado.


De la Documentación VIM

Para borrar el último patrón de búsqueda utilizado:

:let @/ = ""

Esto no establecerá el patrón en una cadena vacía, ya que coincidiría en todas partes. El patrón está realmente despejado, como al iniciar Vim.


En función de la respuesta de @ baruch-even, puede eliminar el término de búsqueda al presionar dos veces la tecla ESC mientras se encuentra en modo normal con:

nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[

Encontré esta respuesta hace años en vim.org:

Agregue lo siguiente a su .vimrc:

"This unsets the "last search pattern" register by hitting return
nnoremap <CR> :noh<CR><CR>

Por lo tanto, después de su búsqueda, simplemente presione regresar nuevamente en el modo de comando, y el resaltado desaparecerá.


Esto borrará el resaltado de búsqueda después de la updatetime milisegundos de inactividad.

updatetime predeterminados de updatetime a 4000ms o 4s, pero configuré el mío a 10s. Es importante tener en cuenta que el tiempo de updatetime hace más que esto, así que lea los documentos antes de cambiarlo.

function! SearchHlClear()
    let @/ = ''
endfunction
augroup searchhighlight
    autocmd!
    autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END

Generalmente mapeo :noh a la tecla de barra invertida. Para volver a habilitar el resaltado, simplemente presione n , y se resaltará nuevamente.


Hay dos complementos 'must have' para esto:

  1. sensible - Ctrl-l para nohlsearch y redibujar pantalla.
  2. unimpared - [oh , ]oh y coh para controlar hlsearch.

Las respuestas que proponen :noh o :nohlsearch (por ejemplo, Matt McMinn's) son correctas para deshabilitar temporalmente el resaltado de búsqueda, como se hizo en la pregunta original.

Pensé que aportaría un mapeo que me parece útil en el modo Normal:

nnoremap <C-L> :nohlsearch<CR><C-L>

De forma predeterminada, Ctrl L en Vim borra y vuelve a dibujar la pantalla. Un número de programas de línea de comandos (en su mayoría aquellos que usan la biblioteca GNU Readline , como Bash) usan la misma combinación de teclas para limpiar la pantalla. Esta función es útil en la situación en la que un proceso que se ejecuta en segundo plano se imprime en el terminal, sobrescribiendo partes del proceso en primer plano.

Esta asignación de modo normal también borra el resaltado del término de búsqueda más reciente antes de volver a dibujar la pantalla. Encuentro que las dos características se complementan entre sí y es conveniente usar un Ctrl L para ambas acciones juntas en lugar de crear una asignación separada para deshabilitar el resaltado de búsqueda.

NB: se usa noremap lugar de map , de lo contrario, el mapeo sería recursivo.

Sugerencia: normalmente reasigno Bloqueo de mayúsculas a Ctrl para que sea más fácil escribir estas combinaciones de teclas; Los detalles para hacer esto dependen de su elección de sistema operativo / sistema de ventanas (y están fuera de tema para esta respuesta). Las dos sugerencias siguientes incluyen información sobre la asignación de Bloqueo de mayúsculas a Ctrl y Esc :


Mi conjetura es que la pregunta original se refería a no desactivar el resaltado de búsqueda, sino simplemente borrar el resaltado de la última búsqueda. La solución de búsqueda de una cadena de galimatías, que mencionó el póster original, es una que he estado usando durante un tiempo para aclarar el resaltado de una búsqueda anterior, pero es fea y engorrosa.

Varias sugerencias que he encontrado para agregar nnoremap ... a ~ / .vimrc tienen el efecto de poner vim en modo de reemplazo al inicio, que no es en absoluto lo que quiero. La solución más sencilla que he encontrado es agregar la línea.

nmap <esc><esc> :noh<return>

a mi ~ / .vimrc. Esto se basa en el principio KISS y no interfiere con las teclas de flecha, lo que al usar una sola <esc> sí. Se requiere un doble <esc> en el modo de comando (o un triple <esc> desde el modo de inserción o reemplazo) para borrar el resaltado de una búsqueda anterior, pero desde una perspectiva de interfaz de usuario, la operación es lo más simple posible.


Para desactivar el resaltado hasta la siguiente búsqueda:

:noh

O desactiva el resaltado por completo:

set nohlsearch

O, para cambiarlo:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>


Si desea poder habilitar / deshabilitar el resaltado rápidamente , puede asignar una tecla para

" Press F4 to toggle highlighting on/off, and show current value.
:noremap <F4> :set hlsearch! hlsearch?<CR>

Simplemente ponga el fragmento anterior en su archivo .vimrc.

Esa es la forma más conveniente para mostrar y ocultar el resaltado de búsqueda con un toque de tecla de canto

Para obtener más información, consulte la documentación http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches


Si tiene instalado el complemento incsearch.vim , hay una configuración para borrar automáticamente resaltar después de buscar:

let g:incsearch#auto_nohlsearch = 1


Tu puedes hacer

:noh

o :nohlsearch para desactivar temporalmente el resaltado de búsqueda hasta la siguiente búsqueda.


Una solución más combinando 2 respuestas principales:

"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>

puede usar : noremap para activar / desactivar el resultado de la búsqueda, como este

:noremap <F3> :set hls! hls?<CR>


Janus para VIM y GVIM tiene una serie de elementos incorporados para newbs como yo, incluidos

<leader>hs - toggles highlight search

que es exactamente lo que necesitas. Sólo escribe \hs en modo normal. (La clave de líder está asignada a \ por defecto).

HTH.







highlight