2015-09-29 117 views
1

我試圖定義一個vim突出顯示方案,其中屬於語言功能的括號突出顯示與功能相同,所以例如,如果函數是紅色的,那麼它們的括號也將是紅色。我的想法是,這將使他們與其他的圓括號結構不同。 (也許這實際上是一個可怕的想法,但我想嘗試一下。)Vim:如何突出顯示功能的括號

我試圖定義一個區域是這樣的:

syn region Function matchgroup=Function start=+Abcd\s*(+ end=+)+ contains=ALL 

但是這永遠不會發現它的右括號。

按照下面的建議(感謝!)我把它改爲:(保存以上的vim的文件,在Vim中打開它,:so %測試)

hi Function gui=bold guifg=Red guibg=NONE 
syn region SpecialFunc matchgroup=Function start=+Abcd\s*(+ end=+)+ contains=ALL keepend 

if 0 
Abcd(123) 
Abcd(Xxxx(123)) 
endif 

我現在得到這樣的:

Screenshot showing nested brackets are not preserved

回答

1

爲了讓您的右括號在你的榜樣強調,你可以嘗試

hi Functionmine gui=bold guifg=Red guibg=NONE 

syn region Functionmine matchgroup=Function start=+TestFun\s*(+ end=+)$+ contains=ALL keepend 

闖闖:

hi Function gui=bold guifg=Red guibg=NONE 
hi InsideFunction gui=NONE guifg=NONE guibg=NONE 
syn match Function "Abcd(.*)" contains=InsideFunction 
syn match InsideFunction "(\zs.*\ze)" 

if 0 
Abcd(123) 
Abcd(Xxxx(123)) 
endif 
+0

這似乎做到這一點 - 謝謝! (現在爲300多個其他功能做這個...) –

+0

對不起,事實證明它沒有。我的函數不會在一行的結尾結束,但如果沒有「$」,結束模式就會匹配它所涉及的第一個右括號。 –

+0

不錯的嘗試,謝謝:)雖然它不是真正的實用,因爲它不嵌套或跨越線條,並且它抑制括號內的所有其他組。看起來這是不可行的,沒有Vimscript的卸載。 –