Vim正面看后面的bug?

tex*_*ood 5 regex vim lookbehind

在文件中输入:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Hello
A

Hello
B
Run Code Online (Sandbox Code Playgroud)

然后使用/以下方法搜索:

\(Hello\n\)\@<=A
Run Code Online (Sandbox Code Playgroud)

在我的Vim版本(7.4,包含的补丁:1-582)中,A底部Hello按预期匹配,B不是,但A第一行的第446位匹配.

这也有一些奇怪的行为,如果我用更多的As 做更长的线,632nd A会突出显示.如果我在行的开头引入16个空格,则该行上的第447个和第632个字符匹配.

我的问题是,这是否会影响其他人,这是一个真正的错误还是我的搜索错误?

Ing*_*kat 4

是的,这看起来像一个错误。我可以使用 Vim 7.4.608 进行重现,但只能使用默认的:set regexpengine=0自动选择。

为了避免这个问题,您可以更改全局选项,或者在模式内显式指定引擎:

\%#=1\(Hello\n\)\@<=A
\%#=2\(Hello\n\)\@<=A
Run Code Online (Sandbox Code Playgroud)

请向vim_dev 邮件列表或其问题跟踪器报告此错误。