Vim中实现大小写不敏感搜索的方法

Vim中实现大小写不敏感搜索的方法

技术背景

在使用 Vim 进行文本编辑时,有时需要进行大小写不敏感的搜索,以提高搜索效率。默认情况下,Vim 的搜索是大小写敏感的,因此需要掌握一些方法来实现大小写不敏感搜索。

实现步骤

使用 \c 转义序列

可以在搜索模式中的任何位置使用 \c 转义序列。例如:

1
2
3
/\ccopyright
/copyright\c
/copyri\cght

若要进行大小写敏感匹配,则使用 \C(大写的 C)。

设置 ignorecase 选项

在搜索前,可以在 Vim 中设置 ic 选项(icignorecase 的缩写):

1
:set ic

若要恢复为大小写敏感搜索,使用:

1
:set noic

使用 smartcase 选项

smartcase 选项非常有用。如果搜索内容包含大写字符,将进行大小写敏感搜索;如果搜索内容全为小写字符,则进行大小写不敏感搜索。可以使用 \c\C 来覆盖此设置:

1
2
3
4
5
6
:set ignorecase
:set smartcase
/copyright " 大小写不敏感
/Copyright " 大小写敏感
/copyright\C " 大小写敏感
/Copyright\c " 大小写不敏感

.vimrc 文件中设置

可以在 vimrc 文件中添加以下命令:

1
2
set ignorecase  - 所有搜索将是大小写不敏感的
set smartcase - 如果搜索内容包含大写字母,则搜索将是大小写敏感的

若要使用 smartcase 提供的功能,需要设置 ignorecase

使用映射切换搜索模式

可以在 .vimrc 文件中添加以下映射,以在大小写敏感和不敏感搜索之间切换:

1
nmap <F9> :set ignorecase! ignorecase?

使用 vimgrep 命令

1
:vimgrep /example\c/ &
  • <kbd>\c</kbd> 表示大小写不敏感
  • <kbd>\C</kbd> 表示大小写敏感
  • <kbd>%</kbd> 表示在当前缓冲区中搜索

其他设置方法

vimrc 文件中添加 set ic 命令,可始终进行大小写不敏感搜索:

1
set ic

也可以在 vimrc 中添加映射,使每次按下 /? 时自动添加 \c 进行大小写不敏感搜索:

1
2
nnoremap / /\c
nnoremap ? ?\c

核心代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 设置大小写不敏感搜索
:set ic

# 恢复大小写敏感搜索
:set noic

# 设置 smartcase 选项
:set ignorecase
:set smartcase

# 在 vimrc 文件中设置
set ignorecase
set smartcase

# 映射 F9 键切换搜索模式
nmap <F9> :set ignorecase! ignorecase?

# vimgrep 命令进行大小写不敏感搜索
:vimgrep /example\c/ &

# 在 vimrc 中添加映射
nnoremap / /\c
nnoremap ? ?\c

最佳实践

  • 对于偶尔需要进行大小写不敏感搜索的情况,可以直接使用 \c 转义序列。
  • 对于经常进行大小写不敏感搜索的情况,建议在 vimrc 文件中设置 ignorecasesmartcase 选项。
  • 使用映射切换搜索模式可以提高操作效率。

常见问题

关于 \c 位置的问题

虽然有些说法认为在正则表达式模式中放置修饰符(如 \c)的位置无关紧要,但实际上位置可能会影响匹配结果。例如:

1
2
3
4
5
6
7
8
9
10
11
匹配的情况:
\c^.*A?.*$
^\c.*A?.*$
^.*\cA?.*$
^.*A\c?.*$

不匹配的情况:
^.\c*A?.*$
^.*A?\c.*$
^.*A?.\c*$
^.*A?.*$\c

获取更多帮助

如果想了解更多 Vim 命令的信息,可以使用 :help 命令。例如:

1
:help ignorecase

输入 :q 可以离开帮助文档返回命令模式。


Vim中实现大小写不敏感搜索的方法
https://119291.xyz/posts/vim-case-insensitive-search-guide/
作者
ww
发布于
2025年5月22日
许可协议