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=
触发的,而不会单独匹配(这将使整个缓冲区变为蓝色)