2016-11-22 31 views
0

我有下一行。如何定义从相同位置开始的语法组?

start body end 

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

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

但第三个应该以“^开始”太(很重要),它会导致很多问题开始。

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

不起作用。据我所知,当两个组中都有相同的第一个字符时,我们应该使用contains属性,但这是不可能的,因为在“开始”和“结束”之间有一个“主体”。任何帮助,高度赞赏。

回答

0

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

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

要小心,它们太慢了。

相关问题