Vim borrar resaltado de la última búsqueda


Después de hacer una búsqueda en Vim, obtengo todas las ocurrencias resaltadas. ¿Cómo puedo desactivar eso? Ahora hago otra búsqueda de algo galimatías que no se puede encontrar.

¿Hay alguna forma de deshabilitar temporalmente el resaltado y luego volver a habilitarlo cuando sea necesario?

 1632
Author: FrankS101, 2009-03-18

30 answers

Para desactivar el resaltado hasta la siguiente búsqueda:

:noh

O desactive el resaltado completamente:

set nohlsearch

O, para alternarlo:

set hlsearch!

nnoremap <F3> :set hlsearch!<CR>
 1316
Author: Mykola Golubyev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-16 22:21:04

De la Documentación de VIM

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

:let @/ = ""

Esto no establecerá el patrón en una cadena vacía, porque coincidiría doquier. El patrón está realmente despejado, como cuando se inicia Vim.

 648
Author: Shaun Bouckaert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-14 01:13:01

Puedes hacer

:noh

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

 559
Author: Matt McMinn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-29 22:15:26

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

Añadir 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 volver de nuevo en el modo de comando, y el resaltado desaparece.

 273
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-19 16:22:09

De http://twitter.com/jonbho/status/2194406821

" Clear highlighting on escape in normal mode
nnoremap <esc> :noh<return><esc>
nnoremap <esc>^[ <esc>^[

La segunda línea es necesaria para la asignación a la clave de escape ya que Vim utiliza internamente escape para representar claves especiales.

 132
Author: Baruch Even,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:02:59

Busca una secuencia de caracteres poco probable (mezcla las teclas en la fila de inicio):

/;alskdjf;

Esto funciona en vim y menos, y es más fácil 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.

 36
Author: millerdev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-17 15:38:09

Remapped to in my .vimrc.archivo local, rápido y sucio pero muy funcional:

" Clear last search highlighting
map <Space> :noh<cr>
 30
Author: avocade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-23 19:48:21
nnoremap <cr> :noh<CR><CR>:<backspace>

De esa manera me deshago de :noh que se muestra en la línea de comandos, al presionar enter después de la búsqueda.

: es como empezar a introducir un nuevo comando, Backspace lo borra y vuelve a poner el foco en la ventana del editor.

 27
Author: sjas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-09 19:04:32

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

 25
Author: caveman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-08 15:58:00

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

Pensé en contribuir con un mapeo que me parece útil en modo Normal:

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

Por defecto, CtrlL en Vim borra y redibuja la pantalla. Una serie 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 borra la pantalla. Esta característica es útil en la situación en la que un proceso que se ejecuta en segundo plano imprime en el terminal, sobreescribiendo 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 una CtrlL para ambas acciones juntas en lugar de crear una asignación separada para deshabilitar la búsqueda destacar.

NB: noremap se utiliza en lugar de map ya que de lo contrario, la asignación sería recursiva.

Consejo: Normalmente remapeo Mayúsculas Locka Ctrl para que sea más fácil escribir tales 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). Los siguientes consejos incluyen información sobre la asignación Bloqueo de mayúsculas a Ctrl así como Esc :

 24
Author: Anthony Geoghegan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-09 11:39:27

Desactivar el resaltado de búsqueda permanentemente

Las coincidencias no se resaltarán cada vez que realice una búsqueda utilizando /

:set nohlsearch

Borrar resaltado hasta la siguiente búsqueda

:noh

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


Claro resaltado al presionar ESC

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

Borrar resaltado al presionar otra tecla o mapa personalizado

  • Aclarar las luces al presionar \ (barra invertida)

    nnoremap \ :noh<return>
    
  • Clear highlights on hitting ESC twice

    nnoremap <esc><esc> :noh<return>
    
 21
Author: Sheharyar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-07 07:08:40

Esto es lo que uso (extraído de muchas preguntas/respuestas diferentes):

nnoremap <silent> <Esc><Esc> :let @/=""<CR>

Con "double" Esc se elimina el resaltado, pero tan pronto como se vuelve a buscar, el resaltado reaparece.


Otra alternativa:

nnoremap <silent> <Esc><Esc> :noh<CR> :call clearmatches()<CR>

Según la documentación de vim:

Clearmatches ()

    Clears all matches previously defined by |matchadd()| and the

    |:match| commands.
 14
Author: Pablo Olmos de Aguilera C.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-29 22:38:10

Para desactivar el resaltado hasta la siguiente búsqueda

:noh

Ilustración Visual

 9
Author: arcseldon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-31 22:54:09

Janus para VIM y GVIM tiene una serie de cosas horneadas para newbs como yo, incluyendo

<leader>hs - toggles highlight search

Que es exactamente lo que necesitas. Simplemente escriba \hs en modo normal. (La clave leader se asigna a \ de forma predeterminada.)

HTH.

 8
Author: brokenthorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-08 15:56:52

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

let g:incsearch#auto_nohlsearch = 1

introduzca la descripción de la imagen aquí

 7
Author: Deqing,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-09 06:46:04

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

updatetime el valor predeterminado es 4000ms o 4s, pero yo establezco el mío en 10s. Es importante tener en cuenta que updatetime hace más que esto, así que lea los documentos antes de cambiarlos.

function! SearchHlClear()
    let @/ = ''
endfunction
augroup searchhighlight
    autocmd!
    autocmd CursorHold,CursorHoldI * call SearchHlClear()
augroup END
 6
Author: Kevin Cox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-08 15:52:58

Si desea ser capaz de habilitar / deshabilitar resaltar rápidamente , puede asignar una clave a

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

Simplemente ponga el fragmento de código anterior en usted .archivo vimrc.

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

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

 6
Author: Amaynut,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-30 13:04:37

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

"To clear the last used search pattern:
nnoremap <F3> :let @/ = ""<CR>
 5
Author: skywinder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-03 21:44:10

Hay dos plugins 'must have' para esto:

  1. sensible - Ctrl-l para nohlsearch y redibujar la pantalla.
  2. unimpared - [oh, ]oh y coh para controlar hlsearch.
 5
Author: dkiyatkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-14 08:16:20

Solo uso el simple nohl a continuación y no se necesitan complementos.

:nohl

 4
Author: Stryker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-28 13:45:37

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

He encontrado varias sugerencias para agregar nnoremap ... a ~/.vimrc tiene el efecto aquí de poner vim en modo de reemplazo al inicio, que no es para nada lo que quiero. La solución más simple que he encontrado es agregar la línea

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

A mi ~/.vimrc. Esto se ajusta al principio de KISS y no interfiere con las teclas de flecha, lo que hace el uso de un único . Se requiere una doble en el modo de comando (o una triple en el modo insertar o reemplazar) para borrar el resaltado de una búsqueda anterior, pero desde la perspectiva de la interfaz de usuario esto hace que la operación sea lo más simple posible.

 4
Author: Lindsay Haisley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-07 18:29:53

Utilizo lo siguiente en mi ~/.vimrc

nnoremap <Leader><space> :noh<Enter>

Esto hace que sea muy fácil y rápido borrar la búsqueda resaltada actual. Mi clave líder está asignada a \, por lo que esto hace que la acción sea muy fácil de realizar con mi dedo meñique y pulgar derecho.

 4
Author: John Slavick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-07 21:24:24

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 Enter y el texto resaltado ya no se resaltará, mientras que el resaltado de búsqueda todavía está habilitado.

 3
Author: Ekans,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-08 15:51:18

Puedes usar : noremap para activar / desactivar el resultado de la búsqueda,así

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

 3
Author: caopeng,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-09 06:06:23

Basado en @baruch-even answer, puede eliminar el término de búsqueda en ESC presione dos veces mientras está en normal modo con:

nnoremap <esc> :let @/ = ""<return><esc>
nnoremap <esc>^[ <esc>^[
 3
Author: dinigo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-02 11:43:22

Personalmente me gusta mapear esc al comando :noh de la siguiente manera:

map <esc> :noh<cr>

Recientemente escribí un artículo completo sobre Vim search : cómo buscar en vanilla Vim y el mejor plugin para mejorar las funciones de búsqueda.

 3
Author: Matthieu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-26 08:11:21

Instalar vim-cool. Fue creado para solucionar este problema específico. Desactiva el resaltado tan pronto como mueve el cursor. Sin embargo, tenga en cuenta que requiere una versión reciente de vim!

 2
Author: 00prometheus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-19 20:08:02

En lugar de confiar en algún mapa de teclado programado en su .archivo vimrc (que no se mantiene para otras instalaciones), solo tiene que utilizar este truco: volver a buscar algo improbable:

/asdfsddsdf
 0
Author: TheBigAmbiguous,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-26 19:32:10

Tampoco me gusta. Me pareció tedioso entrar :nohl todo el tiempo ... así que puse el siguiente mapeo en mi .vimrc

noremap <C-_> :nohl<cr>:<backspace>

El primer bit (:nohl<cr>) borra el resaltado; el segundo bit (:<backspace>) es un truco para limpiar la línea de comandos. La búsqueda sigue ahí en segundo plano, por lo que si simplemente pulsa n volverá a resaltarse y lo llevará a la siguiente ocurrencia.

 0
Author: ricardo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-07 01:39:14

A mi manera: busca cualquier palabra que no exista , como /aaaaaaa, y el mundo se calla inmediatamente~

 -2
Author: Hervey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-27 14:52:18