还在用 ack?试试更快的 ag 吧
The Silver Searcher
A code-searching tool similar to ack, but faster.
这次介绍一个命令行文本搜索工具 The Silver Searcher,命令行简写为 ag。 按照官方的说法 ag 要比 ack 快几十倍,并且使用更加友好。 笔者日常电脑上也基本上是使用 ag 替代了 grep/ack 搜索文本,体验还是挺不错的,安装完之后还可以和 vim 进行集成,比如笔者之前介绍过 fzf.vim 插件, 可以直接在 vim 里使用 :Ag
命令来进行文本搜索。
优势:
- 搜索大项目比 ack 更快
- 自动忽略 .gitignore/.ignore 文件
- 友好的命令行参数
安装
使用系统的包管理工具,可以很容易安装它,以下是安装方式。
# macOS
brew intall the_silver_searcher
# Ubuntu >= 13.10 (Saucy) or Debian >= 8 (Jessie)
apt-get install silversearcher-ag
常用方式
ag 会自动忽略 ".gitignore" 的文件加快搜索, 或者你也可以自己定义想要忽略的文件到 ".ignore" 文件里。 笔者常用的搜索方式有以下几种:
# 搜索 pattern,ag 会遍历当前目录下文件,找到匹配的模式(正则)
ag pattern
# 匹配字面值,而不是正则,使用 -Q
ag -Q .py
# 搜索指定目录
ag pattern /path/to/dir
# 指定文件类型 -G file_type_pattern,比如搜索 py 结尾文件中的 requests
ag -G py$ requests
# 忽略大小写 -i。如果查询的字符串只有小写,ag 默认是大小谢不敏感,如果有大写,就自动改成大小写敏感
ag -i pattern
# 全词匹配(匹配的字符串前后有分隔符),可以剔除其他包含字符串的行
ag -w pattern
同样你可以使用管道来进一步过滤结果,笔者会在视频当中演示我常用的一些用法。
Vim 中使用
笔者推荐使用 fzf.vim 来集成 Ag 搜索到你的编辑器里边。具体可以参考之前的文章,安装完成 fzf.vim 之后就可以用在 vim 中 使用 :Ag pattern
来搜索了。
往期推荐:
为什么知乎上这么多人推荐 HHKB,却不反复强调说该键盘不适合大多数程序员?www.zhihu.com

