Встроенное выделение синтаксиса в Vim
у меня есть пользовательский формат XML-файла, который может содержать блоки кода в определенных тегах.
например:
<Root>
<Sql> select * from foo </Sql>
<MoreJunk> ... </MoreJunk>
<Python><![CDATA[
def Bar(*args):
return False
]]></Python>
</Root>
как я могу заставить Vim использовать подсветку синтаксиса SQL для текста внутри <Sql>
теги и использовать Python higlighting для текста внутри <Python>
теги?
Я знаю, что Vim уже может это сделать, потому что он правильно выделяет Javascript внутри HTML-файлов.
Я попытался проверить файл синтаксиса HTML, но не смог понять его из.
2 ответов
для вашего XML с примером python вам придется сделать что-то вроде этого:
runtime! syntax/xml.vim
unlet b:current_syntax
syntax include @Python syntax/python.vim
syntax region pythonCode start=+<Python>+ keepend end=+/</Python>+ contains=@Python
эти строки будут включать синтаксис XML и синтаксис python, а также указать область python, где VIM будет использовать синтаксис python вместо синтаксиса XML...
конечно, все это хорошо документировано в VIM. См.: он: syn-include о том, как включить файлы синтаксиса.
этой документ описывает, как написать собственную подсветку синтаксиса. Вероятно, вы сможете понять, как подсветка HTML-синтаксиса работает с javascript, с этим в качестве ссылки.