Vim - 搜索
Vim - 搜索
Section titled “Vim - 搜索”搜索是任何文本编辑器中的基础操作,Vim 提供了强大的工具来高效地执行搜索。本章将介绍各种命令和设置,帮助您掌握 Vim 中的搜索。
在本章中,我们将讨论以下内容:
- 搜索相关设置
- 在当前文件中搜索
- 在多个文件中搜索
- 在 Vim 帮助文件中搜索
搜索相关设置
Section titled “搜索相关设置”Vim 提供了多种设置来自定义搜索行为。您可以为当前会话临时设置这些选项,或将它们添加到您的 ~/.vimrc(Windows 上为 ~/_vimrc,Neovim 上为 ~/.config/nvim/init.vim)文件中以使其永久生效。
启用增量搜索(在您输入时显示匹配项):
:set incsearch高亮显示所有搜索匹配项:
:set hlsearch例如,如果启用了 hlsearch 并且您搜索 “fox”,当前缓冲区中所有 “fox” 的出现都将被高亮显示。要临时清除高亮,请使用 :nohlsearch(或 :noh)。下一次搜索时高亮将重新出现。
使搜索不区分大小写:
:set ignorecase如果您的搜索模式包含大写字母,则智能地覆盖 ignorecase(例如,如果同时设置了 ignorecase,搜索 “Fox” 将区分大小写,而搜索 “fox” 将不区分大小写):
:set smartcase要禁用这些设置,在设置名称前加上 “no”:
:set noincsearch:set nohlsearch:set noignorecase:set nosmartcase在当前文件中搜索
Section titled “在当前文件中搜索”使用以下命令向前(朝文件末尾方向)执行搜索:
| 命令 | 描述 |
|---|---|
| / | 向前搜索 <pattern>。按 Enter 开始搜索。 |
| n | 在同一方向上查找上次搜索模式的下一个匹配项。 |
| N | 反转方向,查找上次搜索模式的上一个匹配项。 |
| // | 重复上一次向前搜索。如果您之前使用了 ?,这会很有用。 |
提示:搜索模式可以是正则表达式。有关帮助,请参见 :help pattern。
使用以下命令向后(朝文件开头方向)执行搜索:
| 命令 | 描述 |
|---|---|
| ? | 向后搜索 <pattern>。按 Enter 开始搜索。 |
| n | 查找上次搜索模式的下一个匹配项,这意味着对于 ? 搜索而言是继续向后查找。 |
| N | 反转方向,查找上次搜索模式的上一个匹配项(因此,对于 ? 搜索而言是向前查找)。 |
| ?? | 重复上一次向后搜索。如果您之前使用了 /,这会很有用。 |
搜索光标下的单词
Section titled “搜索光标下的单词”将光标放在任何单词上,使用以下命令进行快速搜索:
| 命令 | 描述 |
|---|---|
| * | 向前搜索光标下的整个单词。 |
| # | 向后搜索光标下的整个单词。 |
| g* | 向前搜索光标下的当前单词(也匹配单词的一部分)。 |
| g# | 向后搜索光标下的当前单词(也匹配单词的一部分)。 |
在多个文件中搜索
Section titled “在多个文件中搜索”Vim 内置的 :vimgrep(或 :vg)命令允许您在多个文件中搜索模式。这会将匹配项填充到 quickfix list 中。
例如,要在当前目录及其子目录中的所有 *.js 文件中搜索字符串 “MyFunction”:
:vimgrep /MyFunction/ ./**/*.js注意 vimgrep 使用 /pattern/。. 指代当前目录,而 ** 是一个递归搜索的 glob。
运行 :vimgrep 后,quickfix list 将包含所有匹配项。使用这些命令来导航列表:
| 命令 | 描述 |
|---|---|
| :copen | 打开 quickfix 窗口以显示所有匹配项。 |
| :cclose | 关闭 quickfix 窗口。 |
| :cnext or :cn | 转到 quickfix list 中的下一个匹配项。 |
| :cprevious or :cp or :cN | 转到 quickfix list 中的上一个匹配项。 |
| :cfirst | 转到第一个匹配项。 |
| :clast | 转到最后一个匹配项。 |
另外,许多用户集成了外部工具,如 grep、ripgrep (rg) 或 The Silver Searcher (ag),以便进行更快速的多文件搜索。这可以使用 grepprg 选项进行配置,然后使用 :grep 命令。例如,使用 ripgrep:
:set grepprg=rg\ --vimgrep\ --no-heading:grep MyFunction ./**/*.js导航命令(:copen、:cn 等)与 :grep 的工作方式相同。
在帮助文件中搜索
Section titled “在帮助文件中搜索”Vim 拥有广泛的内置帮助文档。要在所有已安装的帮助文件中搜索关键字,请使用 :helpgrep(或 :helpg)。这也会填充 quickfix list(如果从帮助窗口使用,则填充 location list)。
例如,要查找所有与 “quickfix” 相关的帮助主题:
:helpgrep quickfix然后使用 quickfix 导航命令,如 :copen、:cn、:cp 来浏览结果。每个结果都将带您到帮助文件中的相关部分。更多信息,请参见 :help :helpgrep。