sintaxe embutido destacando no Vim
-
21-08-2019 - |
Pergunta
Eu tenho um formato de arquivo XML personalizado que pode conter blocos de código dentro de certos tags.
Por exemplo:
<Root>
<Sql> select * from foo </Sql>
<MoreJunk> ... </MoreJunk>
<Python><![CDATA[
def Bar(*args):
return False
]]></Python>
</Root>
Como posso obter Vim à sintaxe SQL uso realça para o texto dentro de tags <Sql>
e usar Python higlighting para o texto dentro de tags <Python>
?
Eu sei Vim já pode fazer isso porque corretamente destaca Javascript dentro de arquivos HTML.
Eu tentei inspecionar o arquivo de sintaxe HTML, mas não conseguiu descobrir.
Solução
Para sua XML com o exemplo de python você teria que fazer algo como isto:
runtime! syntax/xml.vim
unlet b:current_syntax
syntax include @Python syntax/python.vim
syntax region pythonCode start=+<Python>+ keepend end=+/</Python>+ contains=@Python
Estas linhas irão incluir a sintaxe XML ea sintaxe python, ea especificar uma região de python, onde VIM usará a sintaxe python em vez do XML sintaxe ...
Claro, tudo isso está bem documentado na VIM. Veja : ele:. Syn-incluem sobre como incluir arquivos de sintaxe
Outras dicas
Este documento descreve como escrever o seu próprio destaque de sintaxe. Você provavelmente deve ser capaz de descobrir como o HTML-destaque de sintaxe funciona com javascript, com isso como uma referência.