在vi编辑器中,使用
/
后跟文本进行正向搜索,?
进行反向搜索,按n
查找下一个匹配项,N
查找上一个,可启用高亮显示,并支持正则表达式进行复杂模式匹配,是高效定位文本的核心功能。
vi(及其增强版 Vim)是 Linux/Unix 系统中强大的文本编辑器,掌握搜索功能能极大提升编辑效率,以下是所有核心搜索方法和技巧:
基础搜索操作
-
向下搜索(正向搜索)
- 在普通模式下(按
Esc
确保进入),输入: - 紧接着输入要查找的字符串(
search_term
),屏幕底部会出现/search_term
。 - 按
Enter
执行搜索。 - 光标会跳转到下一个匹配项的开头。
- 在普通模式下(按
-
向上搜索(反向搜索)
- 在普通模式下,输入:
- 输入要查找的字符串(
search_term
),屏幕底部出现?search_term
。 - 按
Enter
执行搜索。 - 光标会跳转到上一个匹配项的开头。
导航搜索结果
- 查找下一个匹配项:按
n
(next),方向与初始搜索命令一致:- 如果使用 开始搜索,
n
向下查找。 - 如果使用 开始搜索,
n
向上查找。
- 如果使用 开始搜索,
- 查找上一个匹配项:按
N
(Shift + n),方向与n
相反:- 如果使用 开始搜索,
N
向上查找。 - 如果使用 开始搜索,
N
向下查找。
- 如果使用 开始搜索,
实用搜索技巧
-
高亮显示搜索结果
- 在搜索前或搜索后输入:
:set hlsearch
或:set hls
- 所有匹配项会高亮显示(通常为黄色背景)。
- 关闭高亮:输入
:set nohlsearch
或:set nohls
,更常用的是在搜索后立即清除高亮::nohlsearch
或:noh
(高亮会在下次搜索时重新出现)。
- 在搜索前或搜索后输入:
-
忽略大小写
- 让搜索不区分大小写:输入
:set ignorecase
或:set ic
- 恢复区分大小写:输入
:set noignorecase
或:set noic
- 智能大小写:设置
:set smartcase
,此时如果搜索模式全为小写字母,则忽略大小写;如果模式中包含至少一个大写字母,则区分大小写,通常与ignorecase
配合使用::set ic smartcase
。
- 让搜索不区分大小写:输入
-
搜索特殊字符
vi 搜索模式支持正则表达式,特殊字符需用反斜杠\
转义才能按字面搜索:- (点):搜索实际的点 →
\.
- (星号):搜索实际的星号 →
\*
- (美元符):搜索行尾符 →
\$
^
(脱字符):搜索行首符 →\^
[ ]
(方括号):搜索左/右方括号 →\[
或\]
- 或 :搜索斜杠或问号本身 →
\/
或\?
\
(反斜杠):搜索反斜杠 →\\
- (点):搜索实际的点 →
-
使用基本正则表达式
- (点):匹配任意一个字符(
/a.c
匹配 “abc”, “a c”, “a-c”)。 - (星号):匹配前一个字符的零次或多次出现(
/ab*c
匹配 “ac”, “abc”, “abbc”)。 ^
(脱字符):匹配行首(/^start
匹配以 “start” 开头的行)。- (美元符):匹配行尾(
/end$
匹配以 “end” 结尾的行)。 [ ]
(字符类):匹配括号内的任意一个字符(/[aeiou]
匹配任意元音字母;/[0-9]
匹配任意数字;/[A-Za-z]
匹配任意字母)。[^ ]
(否定字符类):匹配不在括号内的任意一个字符(/[^0-9]
匹配任意非数字字符)。
- (点):匹配任意一个字符(
-
重复上一次搜索
- 按 然后直接按
Enter
:重复上一次向下搜索。 - 按 然后直接按
Enter
:重复上一次向上搜索。 - 按
n
或N
:直接基于上次搜索模式导航。
- 按 然后直接按
-
搜索当前光标下的单词
- 将光标移动到要查找的单词上。
- 按 (Shift + 8):向下搜索该单词(精确匹配,区分大小写)。
- 按 (Shift + 3):向上搜索该单词(精确匹配,区分大小写)。
- 更智能的单词搜索:
g*
:向下搜索包含光标下单词的字符串(非精确匹配)。g#
:向上搜索包含光标下单词的字符串(非精确匹配)。
搜索与替换(结合使用)
搜索常与替换命令 :s
配合:
:%s/old/new/g
:在整个文件 () 中将所有 (g
)old
替换为new
。:10,20s/old/new/g
:在第 10 行到第 20 行范围内替换。- 在替换命令中按
Ctrl + R
+ 可将最后一次搜索模式插入命令行。
常见问题排查
- “找不到模式” (Pattern not found):检查拼写、大小写设置 (
ic
)、特殊字符是否转义。 - 搜索卡住或循环:确保模式正确,特别是使用了
^
/ 或未转义的特殊字符,按Ctrl + C
中断长搜索。 - 高亮太烦人:立即用
:noh
临时关闭,或永久关闭在~/.vimrc
(Vim) 中添加set nohlsearch
。 - 区分 vi 和 Vim:Vim 支持更丰富的正则表达式(如
\+
,\?
,\|
,\(...\)
),在纯 vi 中,使用上述基本正则即可。
掌握 (向下)、 (向上)、n
/N
(导航) 是 vi 搜索的核心,结合高亮 (:set hls
)、忽略大小写 (:set ic
)、转义特殊字符 (\
) 和基本正则表达式 (, , ^
, , [...]
),能高效定位文本。 和 快速搜索光标下单词,搜索历史 ( + Enter
) 方便重复操作,这些技能是熟练使用 vi 编辑器的基石。
引用说明:
- 基于 POSIX 标准 vi 及普遍兼容的 Vim 基本功能,参考了
vi(1)
和vim(1)
官方手册页的核心搜索命令描述。 - 正则表达式部分遵循基础正则表达式 (BRE) 规范,确保在大多数 vi 实现中可用。
- 环境配置建议 (
~/.vimrc
) 符合 Vim 最佳实践。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6869.html