2009-02-06 7 views
13

Ho un formato di file XML personalizzato che può contenere blocchi di codice all'interno di determinati tag.Highligting della sintassi incorporata in Vim

Ad esempio:

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

Come posso ottenere Vim per utilizzare la sintassi SQL evidenziazione per il testo all'interno <Sql> tag e utilizzare Python come evidenziare per il testo all'interno <Python> tag?

So che Vim può già farlo perché evidenzia correttamente Javascript nei file HTML.

Ho provato a controllare il file di sintassi HTML ma non riesco a capirlo.

+0

http://superuser.com/questions/929134/extend-vims-syntax-highlighting-for-only-some-files mostra come estendere la colorazione XML. –

risposta

21

Per la vostra XML con esempio di pitone che avrebbe dovuto fare qualcosa di simile:

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

Queste linee includeranno la sintassi XML e la sintassi di Python, e la specifica di una regione pitone dove VIM utilizzerà il pitone la sintassi invece della sintassi XML ...

Ovviamente tutto questo è ben documentato in VIM. Vedi : he: syn-include su come includere i file di sintassi.

+0

potresti voler aggiungere '' 'containedin = xmlCdata''' prima di' '' contains = @ Python''' – Orwellophile

1

Questo document descrive come scrivere la propria evidenziazione della sintassi. Probabilmente dovresti essere in grado di capire come funziona l'evidenziazione della sintassi HTML con javascript, con quello come riferimento.