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 que no se puede encontrar.
¿Hay alguna manera de deshabilitar temporalmente el resaltado y luego volver a habilitarlo cuando sea necesario nuevamente?
nnoremap <esc> :noh<return><esc>
solución sugerida por @StewartJohnson funciona bien en GUI vim, pero causa problemas con las teclas de flecha y otras teclas codificadas por ESC cuando se ejecuta vim en un terminal. No lo ponga en su~/.vimrc
sin envolverlo enif has('gui_running')
...end
.Respuestas:
Para desactivar el resaltado hasta la próxima búsqueda:
O apague el resaltado por completo:
O, para alternarlo:
fuente
:noh
Funciona mejorset nohlsearch
también deshabilitará el resaltado para las próximas búsquedas. El comportamiento de:noh
es muy diferente: el resaltado se volverá a habilitar automáticamente cuando realice una nueva búsqueda o incluso cuando haga algo relacionado con la búsqueda actual (por ejemplo, cuando escriban
para ir al siguiente elemento).'\/'
(o lo que sea que sea su Líder):map <Leader>/ :nohlsearch<CR>
De la documentación de VIM
Para borrar el último patrón de búsqueda utilizado:
Esto no establecerá el patrón en una cadena vacía, porque coincidiría en todas partes. El patrón se borra realmente, como cuando se inicia Vim.
fuente
:command C let @/=""
usar esto le permite escribir:C
para borrar la cadena de búsqueda ... muy rápido y no afecta la búsqueda o el resaltado futuros.:he registers
). Vim tiene varios registros integrados diferentes que contienen texto, a veces para datos extraídos, a veces para la última búsqueda, etc. Cuando realiza una búsqueda, vim coloca el patrón en el registro "/", al que hace referencia utilizando@/
. También puede asignar valores a los registros utilizando@regname=value
whereregname
is the es el nombre del registro. Entonces,@/=""
es simplemente establecer el registro "/" en una cadena vacía (excepto que para el registro "/" vim borrará la última búsqueda si contiene una cadena vacía).noremap <silent> <c-_> :let @/ = ""<CR>
Tu puedes hacer
o
:nohlsearch
para desactivar temporalmente el resaltado de búsqueda hasta la próxima búsqueda.fuente
Encontré esta respuesta hace años en vim.org:
Agregue lo siguiente a su .vimrc:
Por lo tanto, después de su búsqueda, simplemente presione regresar nuevamente en modo comando y el resaltado desaparecerá.
fuente
n
para encontrar la próxima aparición (que se resaltará nuevamente). Por cierto, al hacer scripts, evitaría la forma abreviada y, en su lugar, escribiría:nohlsearch
.De http://twitter.com/jonbho/status/2194406821
La segunda línea es necesaria para asignar a la tecla de escape, ya que Vim usa internamente el escape para representar teclas especiales.
fuente
Mi solución original (abajo) estaba sucia y derrochadora. Ahora uso
:noh
Al igual que muchas características en Vim, la forma correcta a menudo no es fácilmente detectable.
-
(NO HAGAS ESTO)
Busque una secuencia de caracteres poco probable (aplaste las teclas 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 @/ = ""
Una desventaja potencial es que agrega basura a su historial de búsqueda.
fuente
:nohl
comando. Una vez que me enteré de esto último, inmediatamente me detuve para hacer esas búsquedas./$4
. No solo es poco probable que coincida con algo, sino que es completamente IMPOSIBLE.$
siempre debe ir seguido de una nueva línea o ser el final del archivo, y 4 no es una nueva línea ni el final del archivo. (La razón de 4 es específicamente sólo que es de la misma tecla, por lo que es muy fácil de escribir rápidamente)Reasignado en mi archivo .vimrc.local, rápido y sucio pero muy funcional:
fuente
De esa forma me deshago de lo que se
:noh
muestra en la línea de comandos, cuando presiono enterdespués de la búsqueda.:es como comenzar a ingresar un nuevo comando, Backspaceborrarlo y volver a poner el foco en la ventana del editor.
fuente
[a-z]
y tales personajes.:<Backspace>
, sólo puede añadir<silent>
después de que elnnoremap
decirle a Vim para no mostrar ninguna salida en el área de comandos:nnoremap <silent> <cr> :noh<CR><CR>
.Las respuestas que proponen
:noh
o:nohlsearch
(por ejemplo, las de Matt McMinn) son correctas para deshabilitar temporalmente el resaltado de búsqueda, como se hizo en la pregunta original.Pensé que contribuiría con un mapeo que encuentro útil en modo Normal:
Por defecto, CtrlLen Vim borra y vuelve a dibujar la pantalla. Varios programas de línea de comando (principalmente aquellos que usan la biblioteca GNU Readline , como Bash) usan la misma combinación de teclas para borrar la pantalla. Esta característica 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. Creo que las dos características se complementan entre sí y es conveniente usar una CtrlLpara ambas acciones juntas en lugar de crear una asignación separada para deshabilitar el resaltado de búsqueda.
NB:
noremap
se utiliza en lugar demap
lo contrario, la asignación sería recursiva.Consejo: por lo general vuelvo a asignar Caps Lockpara Ctrlque sea más fácil escribir tales combinaciones de teclas; los detalles para hacerlo dependen de su elección del sistema operativo / sistema de ventanas (y están fuera de tema para esta respuesta). Los siguientes consejos incluyen información sobre el mapeo Caps Locky Ctrltambién sobre Esc:
fuente
Generalmente asigno
:noh
a la tecla de barra invertida. Para volver a habilitar el resaltado, solo presiona n, y se resaltará nuevamente.fuente
Desactivar el resaltado de búsqueda de forma permanente
Las coincidencias no se resaltarán cuando realice una búsqueda utilizando /
Borrar resaltado hasta la próxima búsqueda
o
:nohlsearch
(borra hasta que no Nse presiona)Claro resaltado al presionar ESC
Borrar resaltado al presionar otra tecla o mapa personalizado
Claros claros al presionar \(barra invertida)
Destacados claros al golpear ESCdos veces
fuente
nnoremap <silent> <esc> :noh<return><esc>
solución funciona bien en GUI vim, pero causa problemas graves con las teclas de flecha y otras teclas codificadas por ESC cuando se ejecuta vim en un terminal. No lo ponga en su~/.vimrc
sin envolverlo enif has('gui_running')
...end
. También considere agregar el<silent>
que evita el parpadeo del:noh
comando en la barra de estado.Esto es lo que uso (extraído de muchas preguntas / respuestas diferentes):
Con "doble" Esceliminas el resaltado, pero tan pronto como vuelves a buscar, el resaltado vuelve a aparecer.
Otra alternativa:
Según la documentación de vim:
fuente
.vimrc
y ponga la siguiente entrada en ella:nnoremap <silent> <Esc><Esc> :let @/=""<CR>
@/=""
tiene el efecto secundario de hacer quen
no funcione para recuperar su búsqueda. Prefiero:noh
que mantenga la búsqueda anterior en el registro para su reutilización.Para desactivar el resaltado hasta la próxima búsqueda
fuente
Si tiene instalado el complemento incsearch.vim , entonces hay una configuración para borrar automáticamente el resaltado después de buscar:
fuente
Janus para VIM y GVIM tiene una serie de cosas horneadas para novatos como yo, incluyendo
que es exactamente lo que necesitas Simplemente escriba
\hs
en modo normal. (La clave líder está asignada\
de forma predeterminada).HTH
fuente
Hay dos complementos 'imprescindibles' para esto:
Ctrl-l
para nohlsearch y redibujar pantalla.[oh
,]oh
ycoh
para controlar hlsearch.fuente
co
ayo
en v2, por lo que esyoh
. Ver github.com/tpope/vim-unimpaired/blob/v2.0/doc/unimpaired.txt y github.com/tpope/vim-unimpaired/issues/150coh
todavía funciona, aunque hay un mensaje que sugiere usaryoh
si lo usacoh
Desactive el resaltado tan pronto como mueva el cursor:
Instalar vim-cool . Fue creado para solucionar este problema específico. Desactiva el resaltado tan pronto como mueves el cursor. Sin embargo, ten en cuenta que requiere una versión vim reciente.
fuente
Esto borrará el resaltado de búsqueda después de
updatetime
milisegundos de inactividad.updatetime
el valor predeterminado es 4000ms o 4s pero configuré el mío en 10s. Es importante tener en cuenta queupdatetime
hace más que esto, así que lea los documentos antes de cambiarlo.fuente
Si desea habilitar / deshabilitar el resaltado rápidamente , puede asignar una tecla a
Simplemente coloque el fragmento anterior en su archivo .vimrc.
Esa es la forma más conveniente para mí de mostrar y ocultar el resaltado de búsqueda con un toque de tecla
Para obtener más información, consulte la documentación http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches
fuente
Una solución más al combinar 2 respuestas principales:
fuente
@/=""
tiene el efecto secundario de hacer quen
no funcione para recuperar su búsqueda. Prefiero:noh
que mantenga la búsqueda anterior en el registro para su reutilización. Puede unirse<F3>
a eso connnoremap <F3> :noh<CR>
Personalmente me gusta asignar
esc
el comando de la:noh
siguiente manera:map <esc> :noh<cr>
Recientemente escribí un artículo completo sobre la búsqueda de Vim : cómo buscar en Vanilla Vim y el mejor complemento para mejorar las funciones de búsqueda.
fuente
Solo uso el simple nohl a continuación y no se necesitan complementos.
:nohl
fuente
Supongo que la pregunta original se refería a no 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 mencionó el póster original, es una que he estado usando durante algún tiempo para borrar 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 en el inicio, que no es lo que quiero. La solución más simple que he encontrado es agregar la líneaa mi ~ / .vimrc. Esto obedece al principio KISS y no interfiere con las teclas de flecha, lo que sí hace un solo <esc>. Se requiere un doble <esc> en el modo de comando (o un triple <esc> desde 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.
fuente
nmap <esc><esc> :noh<return> - to turn off search highlighting and nmap <esc>` :set hlsearch<return> - to turn on search highlighting
Yo uso 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 de líder está asignada para
\
que esto haga que la acción sea muy fácil de realizar con el dedo meñique y el pulgar derechos.fuente
Creo que mezclar @ShaunBouckaert y Mar 19 '09 a las 16:22 respuestas es un buen compromiso:
Presione Entery el texto resaltado ya no estará resaltado, mientras que el resaltado de búsqueda todavía está habilitado.
fuente
puede usar : noremap para activar / desactivar el resultado de búsqueda, como este
:noremap <F3> :set hls! hls?<CR>
fuente
Según la respuesta @ baruch-even, puede eliminar el término de búsqueda al ESCpresionar dos veces mientras está en modo normal con:
fuente
<esc>
funciona bien en GUI vim, pero causa problemas graves con las teclas de flecha y otras teclas codificadas con ESC cuando se ejecuta vim en un terminal. No lo ponga en su~/.vimrc
sin envolverlo enif has('gui_running')
...end
. También considere agregar el<silent>
que evita el parpadeo del:noh
comando en la barra de estado.A mí tampoco me gusta. Me resultaba aburrido entrar
:nohl
todo el tiempo ... así que puse el siguiente mapeo en mi.vimrc
El primer bit (
:nohl<cr>
) borra el resaltado; el segundo bit (:<backspace>
) es un truco para limpiar la línea de comando. La búsqueda todavía está allí en segundo plano, por lo que si simplemente presionan
, volverá a resaltarse y lo llevará a la próxima aparición.fuente
Agregué esto a mi
vimrc
archivo.command! H let @/=""
Después de hacer una búsqueda y desea borrar los aspectos más destacados de su búsqueda, simplemente haga
:H
fuente
Alternativamente, puede agregar la asignación en su archivo .vimrc como,
y luego puedes presionar
en cualquier momento para borrar el texto resaltado
fuente