¿Cómo puedo resaltar todas las apariciones de una palabra seleccionada en GVim, como en Notepad ++?
159
En modo normal:
:set hlsearch
Luego busque un patrón con el comando /
en modo Normal, o <Ctrl>o
seguido /
en modo Insertar. *
en modo Normal buscará la próxima aparición de la palabra debajo del cursor. La hlsearch
opción los resaltará a todos si está configurado. #
buscará la aparición previa de la palabra.
Para eliminar el resaltado de la búsqueda anterior:
:nohlsearch
Es posible que desee asignar :nohlsearch<CR>
a alguna tecla conveniente.
hlsearch
mucho, es posible que desee asignar en:set hlsearch!
lugar de:set nohlsearch
. Esto alterna la configuración en lugar de apagarla siempre.*
o#
por<Ctrl>o
en el modo normal.:nohlsearch
, simplemente puede usar:noh
.vimrc
:noremap <F4> :set hlsearch! hlsearch?<CR>
para alternar entre resaltado y eliminar resaltado por<F4>
.La
*
tecla resaltará todas las apariciones de la palabra que está debajo del cursor.fuente
&hlsearch
está encendido.#
.Sé que es una pregunta muy antigua, pero si alguien está interesado en esta función, puede consultar este código http://vim.wikia.com/wiki/Auto_highlight_current_word_when_idle
fuente
de la manera más simple, escriba en modo normal
*
También tengo estas asignaciones para habilitar y deshabilitar
Seleccione la palabra haciendo clic en ella
Bonus: CountWordFunction
Seleccionando la palabra con el mouse y contando las ocurrencias a la vez: OBS: Observe que en esta versión tenemos el comando "CountWord" al final
fuente
nnoremap * *``cgn
ynnoremap # #``cgN
*
, después de escribir , ¿cómo desactivo el resaltado?:noh
o:nohlsearch
nnoremap <silent> * :execute "normal! *N"<cr>
ynnoremap <silent> # :execute "normal! #n"<cr>
? Estos solo resaltan la palabra debajo del cursor pero no la mueven a la siguiente ocurrencia.Las soluciones basadas en búsquedas ( *, /...) mueven el cursor, lo cual puede ser desafortunado.
Una alternativa es usar el complemento mark.vim mejorado , luego complete su
.vimrc
para dejar que haga doble clic en el resaltado de activación (no sé cómo una selección de teclado puede activar un comando):Permite múltiples resaltados, persistencia, etc.
Para eliminar el resaltado, ya sea:
:Mark
(apagar hasta la próxima selección):MarkClear
fuente
:set noincsearch
. En mi opinión, es una de las características más molestas de Vim y una de las primeras cosas que deshabilito para nuevas instalaciones.*
moverá incondicionalmente el cursor. Y no puedo ver cómoincsearch
podría ser molesto, ya que es solo un "mirar hacia adelante", realizar la búsqueda actual sin cambiar realmente su posición.incsearch
evitaría el movimiento, pero una prueba rápida confirma que estás en lo correcto. Mis disculpas. Sin embargo, es muy fácil de crear una asignación que impide el movimiento::nnoremap * *N
. No puedo creer que no te moleste que tu cursor salte por toda la pantalla mientras realizas una búsqueda. Pero ... estas cosas son completamente subjetivas. Vive la différence ;-):let @/='hilight_this'
, suponiendo que lo hayahlsearch
habilitado. Destaca el texto sin saltar, y no tiene que cambiar la configuración existente. Esto cambia el valor que está almacenado actualmente en el registro de búsqueda.Primero (o en tu .vimrc):
Luego coloca el cursor sobre la palabra que deseas resaltar y presiona
*
.hlsearch
significa resaltar todas las ocurrencias de la búsqueda actual, y*
significa buscar la palabra debajo del cursor.fuente
Primero asegúrese de que hlsearch esté habilitado emitiendo el siguiente comando
También puede agregar esto a su archivo .vimrc como conjunto
ahora cuando utiliza el mecanismo de búsqueda rápida en modo comando o un comando de búsqueda normal, todos los resultados se resaltarán. Para avanzar entre resultados, presione 'n' para retroceder presione 'N'
En modo normal, para realizar una búsqueda rápida de la palabra debajo del cursor y saltar a la siguiente aparición con un comando, presione '*', también puede buscar la palabra debajo del cursor y moverse a la aparición anterior presionando '# '
En modo normal, la búsqueda rápida también se puede invocar con
para eliminar aspectos destacados en el uso de las ocupaciones, he vinculado esto a un acceso directo en mi .vimrc
fuente
Habilitar el resaltado de búsqueda:
Luego busca la palabra:
fuente
Mi favorito para hacer esto es el complemento mark.vim . Permite resaltar varias palabras en diferentes colores simultáneamente.
Captura de pantalla de ejemplo
fuente
para resaltar la palabra sin mover el cursor, plop
en tu vimrc.
Lo bueno de esto es
g*
yg#
seguirá funcionando como "normal"*
y#
.Para establecer
hlsearch
fuera, puede utilizar "forma corta" (a menos que tenga otra función que comienza con "Noh" en el modo de comandos)::noh
. O puedes usar la versión larga::nohlsearch
Para una conveniencia extrema (me encuentro alternando
hlsearch
quizás 20 veces por día), puede asignar algo para alternar de estahlsearch
manera:.:. si
<leader>
es \(es por defecto), puede presionar \st(rápidamente) en modo normal para alternarhlsearch
.O tal vez solo quieras tener un
:noh
mapa:Lo anterior simplemente se ejecuta de
:nohlsearch
manera que (a diferencia de:set hlsearch!
) todavía resaltará la palabra la próxima vez que presione *o #en modo normal .salud
fuente
tal vez ?
fuente
Utilizar
autocmd CursorMoved * exe printf('match IncSearch /\V\<%s\>/', escape(expand('<cword>'), '/\'))
Asegúrate de haber
IncSearch
establecido algo. por ejcall s:Attr('IncSearch', 'reverse')
. Alternativamente, puede usar otro grupo destacado en su lugar.Esto resaltará todas las apariciones de palabras debajo de su cursor sin demora. Me parece que una demora me ralentiza cuando paso el código. El color de resaltado coincidirá con el color de la palabra, por lo que se mantiene consistente con su esquema.
fuente
¿Por qué no solo: z /
Eso resaltará la palabra actual debajo del cursor y cualquier otra ocurrencia. Y no tiene que dar un comando separado para cada elemento que está buscando. ¿Quizás eso no está disponible en el impío gvim? Está en vim por defecto.
* solo es bueno si desea que el cursor se mueva a la siguiente aparición. Al comparar dos cosas visualmente, a menudo no desea que se mueva el cursor, y es molesto presionar la tecla * cada vez.
fuente
~/.vimrc
archivo" highlight the searched items set hlsearch " F8 search for word under the cursor recursively , :copen , to close -> :ccl nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
:so%
En el modelo normal, pasa la palabra.
Presione * Presione F8 para buscar recursivamente debajo de todo su proyecto sobre la palabra
fuente
Por ejemplo, este plugIns:
https://github.com/rrethy/vim-illuminate
https://github.com/itchyny/vim-cursorword
Solo busque debajo del cursor en vimawesome.com
La clave, como mencionó clagccs , es que lo más destacado NO entra en conflicto con su búsqueda : https://vim.fandom.com/wiki/Auto_highlight_current_word_when_idle
Captura de pantalla de cómo NO entra en conflicto con la búsqueda: Notas:
fuente