在文件中输入:
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个字符匹配。
我的问题是,这是否会影响其他人,这真的是一个错误,还是我的搜索错误?
答案 0 :(得分:4)
是的,这看起来像个错误。我可以使用Vim 7.4.608重现,但只能使用默认的:set regexpengine=0
自动选择。
要避免此问题,您可以更改全局选项,也可以在模式中明确指定引擎:
\%#=1\(Hello\n\)\@<=A
\%#=2\(Hello\n\)\@<=A
请将此错误报告给vim_dev mailing list或its issue tracker。