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