20

我有一个自定义 XML 文件格式,它可以在某些标签中包含代码块。

例如:

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

如何让 Vim 对标签内的文本使用 SQL 语法高亮显示,并对<Sql>标签内的文本使用 Python高亮显示<Python>

我知道 Vim 已经可以做到这一点,因为它正确地突出了 HTML 文件中的 Javascript。

我尝试检查 HTML 语法文件,但无法弄清楚。

4

2 回答 2

29

对于带有 python 的 XML 示例,您必须执行以下操作:

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 中都有很好的记录。请参阅:he :syn-include了解如何包含语法文件。

于 2009-02-06T10:44:39.387 回答
2

文档描述了如何编写自己的语法高亮。您应该能够弄清楚 HTML 语法突出显示如何与 javascript 一起工作,并以此作为参考。

于 2009-02-06T10:11:17.517 回答