Vim:行后面的语法匹配也是语法匹配

Vim:行后面的语法匹配也是语法匹配,vim,syntax,syntax-highlighting,Vim,Syntax,Syntax Highlighting,我想突出显示与此正则表达式红色匹配的行: syn match RedLine "^\*\*\* .* \*\*\*\n" 然后我想突出显示下面的蓝色线条,不管它包含什么文本 我尝试使用\zs匹配以下行的模式,如下所示: syn match BlueLine "^\*\*\* .* \*\*\*\n\zs.*" syn match BlueLine "\(^\*\*\* .* \*\*\*\n\)\@50<=.*" 但这不起作用(我的理解是读取位置已经通过了\zs之前的匹配

我想突出显示与此正则表达式红色匹配的行:

syn match RedLine "^\*\*\*  .*  \*\*\*\n"
然后我想突出显示下面的蓝色线条,不管它包含什么文本

我尝试使用
\zs
匹配以下行的模式,如下所示:

syn match BlueLine "^\*\*\*  .*  \*\*\*\n\zs.*"
syn match BlueLine "\(^\*\*\*  .*  \*\*\*\n\)\@50<=.*"
但这不起作用(我的理解是读取位置已经通过了
\zs
之前的匹配部分)

所以我试着像这样“向后看”原子:

syn match BlueLine "^\*\*\*  .*  \*\*\*\n\zs.*"
syn match BlueLine "\(^\*\*\*  .*  \*\*\*\n\)\@50<=.*"

实际上,您不需要重新解析第一行来捕获第二行(这确实是非常低效的)。Vim具有,它指示解析器继续解析,并优先于指定的组。
skipnl
关键字跳过中间的换行符。当您不分青红皂白地想要突出显示整个下一行时,一个简单的
*
模式就可以了。该规则唯一重要的细节是所包含的
关键字,因此该规则只匹配由
nextgroup=
触发的,而不会单独匹配(这将使整个缓冲区变为蓝色)


实际上,您不需要重新解析第一行来捕获第二行(这确实是非常低效的)。Vim具有,它指示解析器继续解析,并优先于指定的组。
skipnl
关键字跳过中间的换行符。当您不分青红皂白地想要突出显示整个下一行时,一个简单的
*
模式就可以了。该规则唯一重要的细节是所包含的
关键字,因此该规则只匹配由
nextgroup=
触发的,而不会单独匹配(这将使整个缓冲区变为蓝色)