2009-02-06 79 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一起使用,並將其作爲參考。