如何定义从相同位置开始的语法组?

时间:2016-11-22 23:33:45

标签: vim

我有下一行。

start body end

我需要用自己的突出显示来定义3个不同的组。前两个很容易,我只是执行:

syntax region fooLine start=/^/ end=/$/ contains=fooStart,fooEnd
syntax match fooStart /^start/ contained

但第三个应该从" ^ start"开始。 (也很重要)它会导致许多问题。

syntax match fooEnd /^start.*\zsend/ contained

不起作用。据我所知,当两个组中的第一个字符相同时,我们应该使用contains属性,但这是不可能的,因为有一个" body"之间"开始"和"结束"。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

确定。我找到了一个解决方案 - 所谓的零宽度原子。特别是\@=\@<=

syntax region line start=/^/ end=/$/ contains=start,end
syntax match start /^start/ contained
syntax match end /\(^start.*\)\@<=end/ contained

小心,它们太慢了。