2009-02-06 12 views
13

Tengo un formato de archivo XML personalizado que puede contener bloques de código dentro de ciertas etiquetas.Destacado de sintaxis incrustado en Vim

Por ejemplo:

<Root> 
    <Sql> select * from foo </Sql> 
    <MoreJunk> ... </MoreJunk> 
    <Python><![CDATA[ 
    def Bar(*args): 
     return False 
    ]]></Python> 
</Root> 

¿Cómo puedo obtener Vim para utilizar la sintaxis SQL para resaltar el texto dentro de las etiquetas <Sql> y utilizar Python higlighting texto dentro de <Python> etiquetas?

Sé que Vim ya puede hacer esto porque resalta correctamente Javascript dentro de los archivos HTML.

Intenté inspeccionar el archivo de sintaxis HTML pero no pude encontrarlo.

+0

http://superuser.com/questions/929134/extend-vims-syntax-highlighting-for-only-some-files muestra cómo extender el coloreado XML. –

Respuesta

21

Para su XML con el ejemplo pitón que tendría que hacer algo como esto:

runtime! syntax/xml.vim 
unlet b:current_syntax 
syntax include @Python syntax/python.vim 
syntax region pythonCode start=+<Python>+ keepend end=+/</Python>+ [email protected] 

Estas líneas incluirán la sintaxis XML y la sintaxis de Python, y el especificar una región pitón donde VIM utilizará el pitón sintaxis en lugar de la sintaxis XML ...

Por supuesto, todo esto está bien documentado en VIM. Ver : he: syn-include sobre cómo incluir archivos de sintaxis.

+0

es posible que desee agregar '' 'containedin = xmlCdata''' antes de' '' contains = @ Python''' – Orwellophile

1

Este document describe cómo escribir su propio resaltado de sintaxis. Probablemente deberías ser capaz de descubrir cómo el resaltado de sintaxis HTML funciona con javascript, con eso como referencia.

Cuestiones relacionadas