Vim 会从当前光标位置开始按模式搜索。先进入普通模式并开始向前或向后搜索,之后无需重新输入模式即可重复查找匹配项。
高级文本操作 · 第 4 课
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 后,哪个按键会沿同一向后方向重复搜索?
搜索光标下的单词
在普通模式中,把光标放在一个单词上,然后使用:
*向前搜索该完整单词。#向后搜索该完整单词。
这些命令会设置最近搜索模式,因此可以继续使用 n 和 N。
普通模式中的哪个按键会向前搜索光标下的完整单词?
控制大小写和高亮
Vim 选项可以改变大小写行为:
:set ignorecase让搜索忽略大小写。- 同时设置
ignorecase时,:set smartcase会让包含大写字符的模式恢复区分大小写。 - 模式中的
\c强制该次搜索忽略大小写。 \C强制该次搜索区分大小写。
例如,无论当前大小写选项如何,/\cerror 都会匹配 error、Error 和 ERROR。
启用搜索高亮时,:nohlsearch 会清除当前可见高亮,但不会删除搜索模式。下一次搜索或重复操作仍可再次高亮匹配项。
哪个模式会强制一次针对 error 的 Vim 搜索忽略大小写,而不受当前大小写选项影响?
要在可控文件中练习 Vim 导航和搜索,可以尝试以下动手实验:
- 在 Linux 中使用 Vim 和 Nano 编辑文本文件 - 练习使用 Vim 和 Nano 创建、编辑、保存和导航文本文件。
课程已完成
你已完成 Vim 搜索模式
现在,你可以搜索 Vim 缓冲区,并可预测地在匹配项之间移动。
使用
/开始向前搜索,使用?开始向后搜索。使用
n沿相同方向重复,使用N沿相反方向重复。使用
*或#搜索光标下的完整单词。为单个模式或通过选项控制大小写行为。
清除高亮,同时保留当前搜索模式。