github: the_silver_searcher 比ack快的终端文件内容搜索工具 当你打开终端,面对一个很大很复杂的工程,想去找一个函数的定义或者调用,ag就能帮上忙
A code searching tool similar to ack, with a focus on speed.
ag --help
ag [FILE-TYPE] [OPTIONS] PATTERN [PATH]
ag [FILE-TYPE] [OPTIONS] PATTERN [PATH] FILE-TYPE 如果忽略,ag会搜索它支持的所有文件类型(按后缀名) PATH可以是dir,也可以是filename, 如果忽略,就会搜索当前路径下的所有支持的文件
ag --list-file-types
ag --lua search_pattern
ag -G .lua search_pattern
-G 选项是搜索文件名匹配某些pattern的文件的 此处.lua,是匹配文件名中包含.lua 的所有文件
ag 搜索时,默认忽略了 .gitignore .hgignore .svnignore等版本控制系统所指定 的忽略的文件,如果想搜索那里面的内容,需要用到 -U选项
ag -U some_pattern
ag正则搜索使用的是PCRE's JIT compiler, 兼容perl 的正则表达式
正则的使用内容有很多,要真正展开讲的话需要单独的篇幅,这里只举一两个简单的例子
ag "\bword\b" #搜索单词
ag "(\bkey_word\b):\1:\1"
支持分组搜索, 匹配keyword:keyword:keyword