2015-09-29 70 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的卸载。 –