varias - Vim borrar la última búsqueda resaltando
que es vim (30)
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 ~
A mi tampoco me gusta. Me resultó :nohl
ingresar :nohl
todo el tiempo ... así que puse la siguiente asignación 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 aún está en el fondo, por lo que si presiona n
volverá a resaltar y lo llevará a la siguiente aparición.
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 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 el escape para representar claves especiales.
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>^[
En lugar de confiar en algún mapa de teclas programado en su archivo .vimrc (que no es válido para otras instalaciones), simplemente use este truco: vuelva a buscar algo improbable:
/asdfsddsdf
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
Esto es lo que uso (extraído de muchas preguntas / respuestas diferentes):
nnoremap <silent> <Esc><Esc> :let @/=""<CR>
Con "doble" Esc , elimina el resaltado, pero tan pronto como vuelve a buscar, el resaltado vuelve a aparecer.
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.
Generalmente mapeo :noh
a la tecla de barra invertida. Para volver a habilitar el resaltado, simplemente presione n , y se resaltará nuevamente.
Instale vim-cool . Fue creado para solucionar este problema específico. Desactiva el resaltado tan pronto como mueva el cursor. Tenga cuidado, sin embargo, requiere una versión vim reciente!
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>
Personalmente me gusta mapear esc
al comando :noh
como sigue:
map <esc> :noh<cr>
Escribí un artículo completo recientemente sobre la búsqueda de Vim : cómo buscar en Villa vainilla y el mejor complemento para mejorar las funciones de búsqueda.
Reasignado a mi archivo .vimrc.local, rápido y sucio pero muy funcional:
" Clear last search highlighting
map <Space> :noh<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
Solo uso el nohl simple a continuación y no se necesitan complementos.
:nohl
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>
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 a /
lo que hace que la acción sea muy fácil de realizar con mi dedo meñique y pulgar derechos.
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.
nnoremap <cr> :noh<CR><CR>:<backspace>
De esa manera me deshago de :noh
muestra en la línea de comandos, al presionar enter después de la búsqueda.
: es como comenzar a ingresar un nuevo comando, Retroceso lo borra y vuelve a enfocar la ventana del editor.