You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Vim默认行为,使其匹配模式的所有重叠出现?

在Vim中实现重叠搜索匹配

Vim默认的搜索匹配是非重叠的:找到一个匹配结果后,下一次搜索会从该匹配的结尾位置开始,跳过重叠的可能匹配。要实现重叠匹配,Vim没有直接的配置选项,但可以通过构造特定的搜索模式来实现。

方法1:使用零宽度断言构造搜索模式

零宽度断言不会占用字符位置,能让Vim在匹配时不跳过重叠的可能。以搜索test为例,可以使用以下模式:

/\vtest(?=.)

这个模式的含义是:匹配test且后面至少有一个字符(保证能找到下一个重叠的起始点)。每次按n时,Vim会从当前光标位置的下一个字符开始搜索,从而找到重叠的test。

如果需要匹配所有可能的重叠项(包括最后一个可能的匹配),可以调整为:

/\vtest(?=.*test)?

方法2:使用\zs调整匹配起始位置

通过\zs指定匹配的起始位置,让Vim在匹配后从更靠前的位置继续搜索。比如:

/\vt\zsesst

这个模式实际匹配的是est,但前面的t会被包含在搜索的上下文里,从而模拟出重叠匹配test的效果。

需要注意的是,这些方法都是通过修改搜索模式实现,而非调整Vim的全局选项——Vim本身没有专门的开关来切换重叠/非重叠匹配的默认行为。

内容的提问来源于stack exchange,提问作者AidanUnhappy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:35:30