2013-03-01 97 views
3

我想在VIM中編寫語法突出顯示。你如何突出在另一場比賽中的比賽?vim正則表達式和高亮語法:找到匹配並忽略其中的子匹配

要找到每個匹配,我創建了兩個syn match行,這些行在單獨匹配的情況下工作。

syn match celString "^xpath=.\{-};"  -> matches "xpath=.........;" 
syn match celComment "\${.\{-}}"   -> matches "${LIB_METADATA};" 

highlight syntax results - first line has separated matches, while second line has overlapping matches

  • 第一行是粉紅色的XPath字符串和藍色爲${..}字符串。

  • 對於xpath字符串,第二行是粉紅色的,但包含在該字符串內的${..}被忽略。

我試圖改變syn match行的順序,但是沒有任何效果。

我很感激你的想法。

+0

我的猜測是使用組? http://vimdoc.sourceforge.net/htmldoc/usr_44.html#44.6 – 2013-03-01 14:13:24

回答

5

默認情況下,Vim僅將語法組應用於尚未分配語法的文本。要指定一個組可以包含其他組,使用contains=...屬性:

:syn match celString "^xpath=.\{-};" contains=celComment 

定義的順序應該這裏無關緊要。有關更多信息,請參閱:help :syn-contains

+0

謝謝。這做了工作。 – RaamEE 2013-03-01 14:47:40