还在用 ack ?试试更快的 ag 吧 [视频]

615 阅读2分钟
原文链接: zhuanlan.zhihu.com

还在用 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图标PegasusWang:程序员双十一剁手指南zhuanlan.zhihu.com图标计算机专业必读哪些经典书籍?www.zhihu.com图标