在 Linux 中搜索文件最长用到的搜索工具是 Grep ,在使用 Vim 开发时第一时间想到是不是也可以在 Grep ,
Google 后发现果然 Vim 内置有 Grep,下面我们一起看下 Grep 怎么使用
预览
vimgrep
在 Vim 命令行模式下输入 :h vimgrep
可以看到 vimgrep 的使用文档
命令
1 | :vim[grep][!] /{pattern}/[g][j] {file} ... |
含义
- vim 可作为 vimgrep 的缩写
- ! 可紧随 vimgrep 之后,表示强制执行该命令
- 索引的关键字 pattern 放在了两个 “/” 中间,并且支持正则表达式
- g, j 可选。 如果添加 g,将显示重复行, 如果添加 j,vim 将不会自动跳转到第一个匹配的行(可能是别的文件)
- file 可以是正则文件名,也可以是多个确定的文件名
使用
1 | :vimgrep /user/g ** |
使用该命令可以查找当前目录下所有文件中包含 user 字符串的文件,并跳转到第一个匹配的文件,
同时所有搜索结果会显示在 Quickfix 中,使用 :cw, :copen
可以打开该列表
更多命令1
2
3
4
5:cnext, :cn # 当前页下一个结果
:cprevious, :cp # 当前页上一个结果
:clist, :cl # 使用 more 打开 Quickfix 窗口
:copen, :cope, :cw # 打开 Quickfix 窗口,列出所有结果
:ccl[ose] # 关闭 Quickfix 窗口。
lvimgrep
lvimgrep 与 vimgrep 搜索命令基本一样,不同点在于搜索结果不是显示在 Quickfix 中
而是显示在 location-list 中
quickfix-list vs location-list
quickfix list 是全局的,相对于窗口而言,不同的窗口共用一个quickfix list,
可以使用 :cw 或者 :copen 打开;而 loaction list 是局部于某个特定窗口的,
即不同窗口的 location list 可以不同,使用 :lw 或者 :lopen 命令打开。
(请使用:help quickfix 和:help location-list命令获取帮助)