缺省情况下,在输入查找模式时,Vim 不会进行查找,只有当按下回车键后才会立即进行目标模式搜索。

1. incsearch即时搜索预览

incsearch 选项会让 Vim 根据已经在查找域中输入的文本,预览第一处匹配目标;每当新输入一个字符时,Vim 会即时更新预览内容。

vim-incsearch

在上面的Vim教程示例中,当在查找域中输入 car 之后,Vim 会把第一处匹配高亮起来,即本例中的单词 car。

一旦继续输入字符 r,由于当前的高亮单词不再匹配这一模式,因此,Vim 将跳转到下一个匹配的单词,这一次是 carrot。如果此时按下 Esc 键,查找提示符将会消失,光标也将回退到位于行首的起始位置。但如果按回车键执行这条Vim查找命令的话,光标会跳转到单词 carrot 的首字母上。

2. 检查是否存在目标匹配

Vim 这种即时的反馈可以在真正执行查找前预览第一处匹配,且不用移动光标,这在某些场景下是非常有用的功能。

试想一下,单词 car 与 carrot 可能在文件中相隔几十或上百行,一旦在查找域中将 car 更新为 carr,Vim 将不得不对文档进行滚动才将单词 carrot 显示出来。假设我只想确认单词 carrot 是否在当前文档中出现,却不想移动光标,该怎么办呢?

incsearch 选项被启用时,只需简单地调出查找提示符,并尽可能多地输入组成单词 carrot 的字符,直到该单词首次出现在当前屏幕。一旦找到该单词,只需按下 Esc,即可马上结束查找并返回原位,从而避免移动当前鼠标位置,脱离当前工作的上下文环境。

vim-incsearch

3. 根据预览结果自动补全查找域

通过Vim选项 incsearch 打开实时查找预览的功能后,可以使用快键键 <Ctrl-r><Ctrl-w> 来根据预览结果对查找域自动补全。

30个Vim常用命令和使用技巧整理曾有介绍,<Ctrl-r><Ctrl-w> 可以把光标所在当前单词插入Vim命令行。

因此,如果想完整查找某个单词,但是在输入前面几个字符后,基于Vim的即时查找预览功能已经找到了第一处匹配目标,此时,<Ctrl-r><Ctrl-w> 便可将找到的第一处目标填充到查找模式,减少使用键盘输入字母的次数。


关于Vim查找和搜索,可以参考Vim教程网上的文章Vim搜索命令使用方法和技巧Vim搜索字符转义与very magic搜索模式

嗯,扫一扫就可以找到小女子我啦~