Vim 搜索模式
100%

高级文本操作 · 第 4 课

Vim 搜索模式

学习如何在 Vim 中向前或向后搜索,以及如何重复、细化或清除模式匹配。

Vim 会从当前光标位置开始按模式搜索。先进入普通模式并开始向前或向后搜索,之后无需重新输入模式即可重复查找匹配项。

向前搜索

在普通模式中输入 /,键入模式,然后按 Enter。Vim 会移动到光标之后的下一个匹配项:

/pretty

搜索使用 Vim 的正则表达式语法,因此 .*[\ 等字符可能具有特殊含义。如果模式的其余部分应以 very nomagic 方式处理,请在开头使用 \V;也可以有意转义特殊字符。

在普通模式中,哪个命令会开始向前搜索 pretty

向后搜索

输入 ?、键入模式并按 Enter,会移动到光标之前的上一个匹配项:

?pretty

这并不天然表示“文件中的最后一个匹配项”。结果取决于当前光标位置。在 Vim 默认的 wrapscan 设置下,搜索可以在文件开头或末尾回绕;:set nowrapscan 会禁用这种回绕。

普通模式中的哪个搜索前缀会从光标向前面的文本查找?

重复搜索

完成任一种搜索后:

  • n 沿原来的搜索方向重复。
  • N 沿相反方向重复。

因此,在 /pretty 之后,n 向前移动,N 向后移动;在 ?pretty 之后,n 向后移动,N 向前移动。

运行 ?error 后,哪个按键会沿同一向后方向重复搜索?

搜索光标下的单词

在普通模式中,把光标放在一个单词上,然后使用:

  • * 向前搜索该完整单词。
  • # 向后搜索该完整单词。

这些命令会设置最近搜索模式,因此可以继续使用 nN

普通模式中的哪个按键会向前搜索光标下的完整单词?

控制大小写和高亮

Vim 选项可以改变大小写行为:

  • :set ignorecase 让搜索忽略大小写。
  • 同时设置 ignorecase 时,:set smartcase 会让包含大写字符的模式恢复区分大小写。
  • 模式中的 \c 强制该次搜索忽略大小写。
  • \C 强制该次搜索区分大小写。

例如,无论当前大小写选项如何,/\cerror 都会匹配 errorErrorERROR

启用搜索高亮时,:nohlsearch 会清除当前可见高亮,但不会删除搜索模式。下一次搜索或重复操作仍可再次高亮匹配项。

哪个模式会强制一次针对 error 的 Vim 搜索忽略大小写,而不受当前大小写选项影响?

课程已完成

你已完成 Vim 搜索模式

现在,你可以搜索 Vim 缓冲区,并可预测地在匹配项之间移动。

  • 使用 / 开始向前搜索,使用 ? 开始向后搜索。

  • 使用 n 沿相同方向重复,使用 N 沿相反方向重复。

  • 使用 *# 搜索光标下的完整单词。

  • 为单个模式或通过选项控制大小写行为。

  • 清除高亮,同时保留当前搜索模式。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 高级文本操作