zzzhc's Blog

stay curious

Ack - Better Grep

Ack是一个给程序员用的grep, 使用perl regular expressions, 而不是POSIX/GNU subset.

why ack?

  • 使用perl regular expressions, 忘掉grep那套不人性的pattern吧
  • 速度快, 默认只搜索程序代码文件
  • 自动忽略.svn, .git, CVS这类目录, 默认递归搜索子目录
1
2
3
4
5
6
# with grep
$ grep pattern $(find . -type f | grep -v '\.svn')
or
$ grep -R --exclude-dir .svn pattern
# with ack
$ ack pattern
  • 支持搜索指定文件类型
1
2
# 只搜索ruby code
$ ack --ruby pattern

install

1
2
3
4
# mac
$ brew install ack
# ubuntu
$ sudo apt-get install ack-grep

integrate into vim

  • install ack.vim
  • set grepprg=ack in vimrc

custom ack

Ack默认包含很多filetype => extensions的设置,但新出现的语言不一定支持。好在ack提供—type-add TYPE=.EXTENSION[,.EXT2[,…]], —type-set TYPE=.EXTENSION[,.EXT2[,…]]来扩展。经常用的可以加到~/.ackrc里, 我的.ackrc:

1
2
3
4
5
6
7
$ cat ~/.ackrc
--type-add
ruby=.haml,.ru
--type-add
css=.scss,.sass,.less
--type-add
js=.coffee

Comments