Vim正面看后面的bug?

时间:2015-02-12 16:45:22

标签: regex vim lookbehind

在文件中输入:

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

Hello
A

Hello
B

然后使用/

搜索此内容
\(Hello\n\)\@<=A

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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

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

请将此错误报告给vim_dev mailing listits issue tracker