reemplazar portapapeles pegar linea insertar inicio editar copiar buscar vim

portapapeles - Resalte el resultado de búsqueda actual en vim



vim insertar linea (4)

En emacs, cuando realice una búsqueda, habrá un color de resaltado para todas las apariciones en el búfer y otro color para la aparición en la que se encuentre el cursor. Me preguntaba si alguien sabía acerca de un comportamiento similar en vim, un plugin de vim, o incluso algunas ideas sobre cómo hacerlo yo mismo en vimscript.

(nota, ya sé sobre hl-IncSearch, que está cerca, pero no es lo que estoy buscando)



No tengo una respuesta real, pero una forma sencilla de obtener tal vez el 75% de lo que desea es cambiar el resalte del cursor. El bloque de cursor gris predeterminado no contrasta bien con el amarillo predeterminado de los resaltados de búsqueda. Así que simplemente cambie el cursor resaltando a (a) algo que contrasta más con amarillo y (2) también contrasta con otros colores en su esquema de colores. Para mí algo como esto funciona bastante bien:

highlight Cursor guifg=green guibg=red

Para mí, el cursor rojo parpadeante en la primera letra de la búsqueda actual se destaca bastante bien. No es tan bueno como una solución completa, pero es muy simple. (Supongo que funciona igual de bien en el terminal Vim si agrega esos elementos al comando de highlight pero no lo ha probado allí).


Parece que desea resaltar todos los resultados en el búfer. Puedes decir

:set hls

Que encenderá hlsearch . Entonces puedes decir

:set nohls # turn off permanently :noh # turn off until next time you search.

También puede buscar / resaltar la palabra debajo del cursor con * (adelante) o # (atrás).


Por lo que sé, no hay una forma integrada de hacer lo que quieres.

Si intentara implementarlo yo mismo ... Bueno, una forma de hacerlo es anular * , p y combinarlo con algo como esta función :

noremap n n:call HighlightNearCursor()<CR> noremap p p:call HighlightNearCursor()<CR> noremap * *:call HighlightNearCursor()<CR> function HighlightNearCursor() if !exists("s:highlightcursor") match Todo //k*/%#/k*/ let s:highlightcursor=1 else match None unlet s:highlightcursor endif endfunction

No lo he probado, así que esta no es una solución completa, pero creo que es al menos un enfoque viable.

EDITAR: Es probable que tenga que configurar algunos colores de resaltado personalizados. Esta página de vimwiki proporciona información sobre eso, aunque recuerdo haber visto un ejemplo de terser en alguna parte .

Mark.vim a Mark.vim : Tal vez una solución más limpia es utilizar Mark.vim junto con la primera técnica. Entonces todo se reduciría a algo como:

noremap n /nn/m noremap p /np/m noremap * /n*/m