Vim 积极的后视错误?

Vim positive lookbehind bug?

在文件中输入:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Hello
A

Hello
B

然后使用 /:

搜索
\(Hello\n\)\@<=A

在我的 Vim 版本(7.4,包含的补丁:1-582)上,Hello 下面的 A 按预期匹配, B 不是,而且第一行的第 446 个 A 也匹配。

这还有一些奇怪的行为,如果我用更多 A 使行变长,第 632 个 A 会突出显示。如果我在行首引入16个空格,则匹配到该行的第447个和第632个字符

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

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

为避免此问题,您可以更改全局选项,或在模式中明确指定一个引擎:

\%#=1\(Hello\n\)\@<=A
\%#=2\(Hello\n\)\@<=A

请将此错误报告给 vim_dev mailing list, or its issue tracker