2009-02-06 16 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.