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。
在文件中输入:
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。