我正在尝试创建用于在缓冲区内执行模糊搜索的脚本。主要思想是接受一些输入,然后.\{-}
在每对字符之间插入,例如foo
变为f.\{-}o.\{-}o
。
这工作得很好,但是提出了很多不理想的比赛。我认为模糊搜索应该首先产生最短的匹配项。考虑以下示例:
public void put()
对put
(so,p.\{-}u.\{-}t
)进行模糊搜索将匹配整个字符串public void put
,但是该put
匹配范围内的较短字符串会更有用。
非贪心运算符擅长查找较早结束的匹配项,但我需要同时可以偏向于较晚开始的匹配项的东西。从概念上讲,它在两个方向上都应该是非贪婪的。这可能吗?
另请参阅:stackoverflow.com/q/15191291(不幸的是,您的问题没有答案)
—
Doorknob
@Doorknob,没有答案,但确实提出了一个要点:Regex不会从字符串的中间开始搜索。我可能需要涉及一些VimScript才能完成工作。我正在研究反转(长)匹配的想法,并在其中寻找反转的模式。
—
tommcdo
Tim Pope 今天发布了vim-haystack。听起来与您所需要的相似。也许您可以从中获得启发甚至使用它。
—
tokoyami 2015年
我希望比赛尽早开始,尽早结束,同时仍要满足比赛模式。
—
tommcdo