有没有办法像在 emacs 中一样在 vim 中搜索?
更准确地说,假设我开始搜索并启用了增量搜索。光标将转到第一个匹配项。我按 Enter 键,然后按“n”转到下一个匹配项。现在我想在原始搜索表达式中添加一些字符并搜索下一个匹配项。我无法做到这一点,因为在我按下“Enter”键后,焦点离开了搜索词区域。
emacs 的对应键是 ctrl-s blah ctrl-s ha。最后我会搜索术语“blahha”。
这有道理吗?有可能吗?
编辑
理想的情况是执行类似/blah <CS> 的操作,并让它立即跳转到第二次出现的“blah”,同时将焦点保持在搜索缓冲区中。
答案1
我能想到的最接近的方法就是点击/<C-R>/
然后附加你的新文本。/
将弹出搜索对话框,<C-R>
允许你从其中一个寄存器中粘贴,该/
寄存器是上一个搜索缓冲区,其中包含你最近的搜索文本。
如果你发现自己经常这样做,你可以为它做一个映射,比如
nnoremap <leader>/ /<C-R>/
正如我在其他评论中提到的,如果您想留在搜索缓冲区中,您可以将类似这样的内容添加到您的 vimrc 中。我认为这会让您得到您想要的东西。
cnoremap <C-S> <CR>/<C-R>/
答案2
/<Up>
或/<C-P>
将带您返回上一个搜索,然后您可以继续键入以附加。:nnoremap / /<Up>
如果您希望这是您的默认行为,您可以将其添加到您的 vimrc 中。