我试图通过从以下位置更改我的fsharp语法文件(来自this插件)中的这一行来获得一些效率方面的改进:

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




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


由于“ \ @

为了提高速度,最好避免这种情况。尝试使用“ \ zs”代替| / \ zs |。


但是,这不起作用,也没有高要求

open SomeModule


怎么会这样?在vim中使用/进行常规搜索会在使用第一个和第二个匹配模式时都高亮显示'SomeModule'。

最佳答案

Vim docs for the \@<= construct中,使用\zs的示例省略了使用\@<=的等效模式匹配中已经存在的括号。我只是在猜测,但是如果您尝试以下语法匹配会怎样?

syn match    fsharpModule     "\<open\s\+\zs[a-zA-Z.]\+"

10-07 16:05