2009-02-06 73 views
13

我有一个自定义的XML文件格式,它可以包含某些标记中的代码块。Vim中的嵌入语法高亮

例如:

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

我怎么能得到Vim中使用SQL的语法高亮文本中<Sql>标签和使用Python higlighting文本里面<Python>标签?

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

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

+0

http://superuser.com/questions/929134/extend-vims-syntax-highlighting-for-only-some-files显示如何扩展XML着色。 – 2015-06-23 15:33:21

回答

21

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

+0

你可能想在``contains = @ Python```之前添加containsin = xmlCdata``` – Orwellophile 2016-06-16 11:58:50

1

这个document描述了如何编写自己的语法突出显示。您应该能够弄清楚HTML语法突出显示如何与javascript一起使用,并将其作为参考。