Ag (the_silver_searcher) 安装使用
if (I am a Programmer || I have a strong sense of time) I use ag
1. 安装命令行ag(代码中行首的“\”是多余的)
\#!/usr/bin/env bash
\#Author Leslie Guan
\#make sure you have the root permission
\#Usage . install_ag.sh
set -x
TEMP_DIR=$(mktemp -d Leslie.Guan.XXXXXX)
cd ${TEMP_DIR}
wget https://github.com/ggreer/the_silver_searcher/archive/master.zip
TAR_DIR=$(unzip *.zip)
TAR_DIR=${TAR_DIR%%/*}
TAR_DIR=${TAR_DIR##*:}
cd ${TAR_DIR}
apt-get install -y automake pkg-config libpcre3-dev zlib1g-dev liblzma-dev --force-yes
./build.sh && make install
cd ../../
rm -rf ${TEMP_DIR}
ag -V
set +x
ubuntu13.10以后可以直接运行
apt-get install silversearcher-ag
2. 安装Vim插件(必须先安装ag命令行工具)(代码中行首的“\”是多余的)
\#!/usr/bin/env bash
\#Author Leslie Guan
\#make sure you have the root permission
\#Usage . install_Ag4Vim.sh
set -x
TEMP_DIR=$(mktemp -d Leslie.Guan.XXXXXX)
cd ${TEMP_DIR}
wget https://github.com/rking/ag.vim/archive/master.zip
TAR_DIR=$(unzip *.zip)
TAR_DIR=${TAR_DIR%%/*}
TAR_DIR=${TAR_DIR##*:}
cd ${TAR_DIR}
cp cp {plugin,autoload,doc} /usr/share/vim/vimcurrent/ -rf
cd ../../
rm -rf ${TEMP_DIR}
set +x
3. 使用
命令行使用
ag HelloWorld
ag HelloWorld path/to/search
Ag HelloWorld
Ag HelloWorld path/to/search
在Ag查找出来的quickfix窗口中,你可以使用下列命令:
e to open file and close the quickfix window
o to open (same as enter)
go to preview file (open but maintain focus on ag.vim results)
t to open in new tab
T to open in new tab silently
h to open in horizontal split
H to open in horizontal split silently
v to open in vertical split
gv to open in vertical split silently
q to close the quickfix window
详细使用方法请查看帮助:
man ag
4. Why ag
速度对比ag>ack>grep
在android全部源码中查找(测试环境20线程32GB内存):
time ag -i activity
real 2m42.568s
user 0m16.049s
sys 1m29.358s
time ack -i activity
real 5m17.780s
user 1m35.830s
sys 0m17.521s
time grep -Hrni activity .
real 49m27.518s
user 43m13.918s
sys 0m38.178s
It searches code about 3–5× faster than ack.
It ignores file patterns from your .gitignore and .hgignore.
If there are files in your source repo you don't want to search, just add their patterns to a .agignore file. *cough* extern *cough*
The command name is 33% shorter than ack!
Leslie Guan