Vim正则表达式跳过分隔符

时间:2012-12-28 07:08:13

标签: regex vim vim-syntax-highlighting

我正在尝试创建一个vim语法文件,我想匹配以下文本:

@[one two three four]

基本上,我希望将onetwo匹配为两个单独的匹配,我不关心threefour(或其后的任何内容)。我也不想在表达式的开头包含@[分隔符。

我尝试用区域来做这件事,如下:

syn region langParamOne matchgroup=langListStart start=/@\[/ end=/\s\|\]/
syn region langParamTwo matchgroup=langListStart start=/@\[\S\+\s\+/ end=/\s\|\]/

不幸的是,这不仅看起来很混乱,而且vim只会匹配其中一个区域,因为一个区域包含另一个区域。

如何为此语法设置匹配项,但不包括匹配项中的起始@[

1 个答案:

答案 0 :(得分:1)

这个怎么样:

syn region langParam matchgroup=langListStart start=/@\[/ end=/\]/ contains=langParamOne,langParamTwo
syn match langParamOne /\(@\[\)\@<=\S\+/ contained
syn match langParamTwo /\(@\[\S\+\s\)\@<=\S\+/ contained