假设我有一个带有重复字符的行,而我的光标位于该行的开头,例如
[=]===================
如果我运行/=
,则会突出显示光标后面的=
符号,如预期的那样。
=[=]==================
然而,如果我然后搜索/==
,我会指望
=[==]=================
但我得到了
==[==]================
同样,对于/===
,我希望
=[===]================
但我得到了
===[===]==============
有人可以解释这种行为吗?这是一个错误还是设计?
修改
在向后搜索时,我看到甚至更奇怪的行为。假设我的光标位于该行的下方:
?=
:(预期)
===================[=]
?==
:(预期)
==================[==]
?===
:(预期)
=================[===]
?====
:(意外)
===============[====]==
?=====
:(意外)
============[=====]===
?======
:(预期)
==============[======]
?=======
:(意外)
============[=======]=
?========
:(意外)
======[========]======
我真的很想听到这种行为的解释。
答案 0 :(得分:2)
12[3]212321
现在你想要进入第5个位置,然后找12321
该行的第一场比赛是从位置1.这将匹配
[12321]2321
由于第五个位置的1
已用于第一场比赛,vim
将无法看到匹配
1232[12321]
在您的情况下,来自
的/===
[=]===================
跳过该行的第一个匹配,光标将跳转到第二个匹配。
===[===]==============
编辑: 向后搜索也会计算从行首开始的匹配。 当你有一个20个字符的字符串
====================
并回顾?===
将开始从该行的开头进行匹配:
=== === === === === === ==
并将匹配
=== === === === ===[===]==
匹配仍然是从左到右阅读,所以你不会在这里找到一个苹果:
reversed elppa