如何在VIM中退出搜索模式?

15

给定以下类似的文件:

blah
blah
collection = getCollection();
process(somethingInTheWay, target);

...在 vim 中执行这个短的 'search' 命令序列之后...

/col<carriage return>

我的光标将位于“collection”第一次出现的位置。

现在,如果我想重新搜索,那么哪个命令会从我的vim命令行中删除“/col”?


2
假设您仍处于正常模式,请开始输入“/ <新搜索>”。 - Lieven Keersmaekers
2
按下“Enter”键后,您已经进入正常模式。只需再次按“/”即可进行新的搜索。 - Kent
1个回答

32

这里有几个因素起作用。您输入的内容("/col")在搜索后会在命令行中额外显示一段时间。通常人们不在意这一点,但是一些人在一段时间后发现这很有帮助。当您按下 Enter 并且 vim 将光标放在第一个匹配项上时,您已经离开了“搜索模式”。vim 会在重新绘制屏幕或需要空间时懒惰地删除搜索字符串。如果您想要手动删除它,有几种方法:

  • Ctrl-L(重绘)
  • :redraw
  • 任何由 /:EscBackspace 组合的方式

现在我写道,您已经通过 Enter 离开了“搜索模式”,但您可以随时使用 n / N 继续进行上一次搜索。这些命令只需获取特殊寄存器 / 中的内容并将其用于进一步搜索。可以通过从 / 中删除上次搜索模式来“禁用”此行为:

:let @/ = ""

您可以手动将某些内容放入寄存器中,这样您就能在没有开始任何搜索的情况下“继续搜索”。

如果您只想要消除当前高亮显示的匹配结果,请键入:

:noh

您可以关闭或切换一般匹配的高亮显示:

:set nohls
:set hls!

后者是一个很好的按键绑定候选项。我用它来切换上次搜索的高亮显示(助记符:klear——不太准确,但对我有用):

:nno <C-k> :set hls!<CR>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接