Vim 语法文件与 \zs 不匹配

and*_*hhp 6 regex syntax vim f#

我试图通过更改我的 fsharp 语法文件(来自插件)中的这一行来获得一些效率改进:

syn match    fsharpModule     "\%(\<open\s\+\)\@<=[a-zA-Z.]\+"  
Run Code Online (Sandbox Code Playgroud)

syn match    fsharpModule     "\%(\<open\s\+\)\zs[a-zA-Z.]\+"
Run Code Online (Sandbox Code Playgroud)

因为“\@<=”构造上的文档指出:

为了速度,通常最好避免这种多重。尝试使用“\zs”代替 |/\zs|。

但是,这不起作用,并且没有突出显示

open SomeModule  
Run Code Online (Sandbox Code Playgroud)

怎么会这样?在使用第一个和第二个匹配模式时,在 vim 中进行常规搜索(使用 /)会突出显示“SomeModule”。

rmu*_*unn 2

构造的 Vim 文档\@<=中, using 的示例\zs省略了等效模式匹配 using 中出现的括号\@<=。我只是猜测,但是如果您尝试以下语法匹配会发生什么?

syn match    fsharpModule     "\<open\s\+\zs[a-zA-Z.]\+"
Run Code Online (Sandbox Code Playgroud)