syntax-highlighting – Resaltado automático de texto de líneas idénticas

Pregunta:

Vi a un experto ninja vim hacer esto hace un tiempo, pero no tengo idea de dónde comenzar.

A) ¿Hay alguna manera de configurar el color de fondo de vims para que las líneas consecutivas con contenido idéntico se resalten?

B) Si alguien sabe cómo hacer eso, un buen ajuste a esto sería si el resaltado ocurriera en líneas consecutivas pero solo considere la primera palabra (no toda la línea).

Se utiliza un segundo ajuste si el resaltado se puede configurar en diferentes colores en función del número de líneas coincidentes (o palabras según AB esté activo). Entonces, solo tenemos dos líneas consecutivas que coinciden con el verde, 3-5 líneas consecutivas luego naranja, 6+ luego rojo.

Respuesta:

Los siguientes conjuntos de match parecen funcionar para (A):

:syn match Low /\v(.+)\n(\1\n)/
:syn match Medium /\v(.+)\n(\1\n){2,4}/
:syn match Critical /\v(.+)\n(\1\n){5,}/
:hi Critical  ctermfg=red
:hi Medium  ctermfg=yellow
:hi Low  ctermfg=green

Parece que el orden es crucial aquí. Si las coincidencias Low o Medium vienen después de Critical , quedan subsumidas por los requisitos más flexibles de estas, y de manera similar para Low wrt Medium .

El resaltado no aparece inmediatamente después de agregar, digamos, una tercera o sexta línea duplicada, sino una vez que se mueve un poco después de agregarlos. No estoy seguro de qué lo desencadena, exactamente.

Para B, imagino que podrías reemplazar la expresión regular con:

/\v(\S+).*\n(\1.*\n)/

En general, reemplace todo el (.*) Con (\S+).* Y \1 con \1.* , o lo que sea que constituya una palabra para usted.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım