2010-01-27 10 views
8

Me gustaría que vim resalte líneas completas que coincidan con ciertos patrones. Puedo obtener todo el texto en una línea para resaltar (haciendo syn match MyMatch "^.*text-to-match.*$"), pero siempre se detiene al final del texto. Me gustaría continuar hasta el final del trimestre, como destacar CursorLine.¿Cómo puedo hacer que la sintaxis vim resalte una línea completa?

He intentado reemplazar $ con un \n^, con la esperanza de que lo envolviera. Ningún cambio. (En realidad, no esperaba que esto funcionara, pero no hay nada malo en intentarlo). También intenté ajustar el syn-pattern-offset (que he leído aquí: http://vimdoc.sourceforge.net/htmldoc/syntax.html#:syn-pattern). Para abreviar, agregue he=he-5 resaltará 5 caracteres menos, pero he=he+5 no muestra caracteres adicionales porque no hay caracteres para resaltar.

Este es mi primer intento de hacer una sintaxis de vim y soy relativamente nuevo en vim. Por favor sea gentil e incluya explicaciones.

Gracias!

(edit: Se olvidó de incluir, este es un punto culminante de varias líneas Eso probablemente aumenta la complejidad un poco..)

+0

¿Se supone que su patrón para leer '^ * texto-a-partido * $ '..? – Cascabel

+0

Jefromi, lo es. SO aparentemente usa asteriscos envueltos para hacer itálicas. Está arreglado ahora. – valadil

+0

No hay otras sintaxis, pero es completamente posible que el resto de mi sintaxis sea contundente. ¿Tal vez debería comenzar desde las líneas que quiero resaltar completamente y luego escribir el resto una vez que esté funcionando? – valadil

Respuesta

8

De la documentación sobre syn-pattern:

El área resaltada nunca habrá fuera del texto coincidente.

Me sorprendería si consiguiera que esto funcione, pero, de nuevo, Vim siempre está lleno de sorpresas.

+0

Sí, pero el patrón coincide con toda la línea. Debería resaltar toda la línea. – Cascabel

+1

Si la ventana tiene 80 caracteres y el texto tiene 4 caracteres, solo se combinan los 4 caracteres y solo se resaltan los 4 caracteres. El OP quiere resaltar las 80 columnas. – Jay

+1

Jay es correcto. No hay forma de imitar el comportamiento de la opción 'cursorline' con resaltado de sintaxis estándar. El resaltado de sintaxis simplemente tiene como objetivo resaltar el texto existente. – jamessan

10

Es muy adaptable como nombre de archivo (tampón) y la línea de resalte fila completa no es necesario ser identificado de forma explícita, pero al parecer el comando sign se puede utilizar:

Es posible resaltar un entero línea usando el : sign mecanismo.
Un ejemplo se puede encontrar en :help sign-commands
En pocas palabras:

:sign define wholeline linehl=ErrorMsg 
:sign place 1 name=wholeline line=123 file=thisfile.txt 

Obviamente, usted debe escoger un grupo higlight que cambia el color del fondo para el argumento linehl.

fuente: Erik Falor, vim mailing list

+0

Puede resaltar en segundo plano toda la línea de esta manera, pero el texto perderá su resaltado de sintaxis. –

Cuestiones relacionadas