Вопрос

У меня есть собственный формат файла 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, но не смог этого понять.

Это было полезно?

Решение

Для вашего примера 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, используя это в качестве справки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top