一個相似於代碼搜索工具ack
,着重於速度。html
Github: https://github.com/ggreer/the_silver_searcher前端
ack
。.gitignore
和你的文件模式.hgignore
。.ignore
文件中便可。(*咳嗽* *.min.js
*咳嗽*)ack
,全部的鍵都在主排上!Ag如今至關穩定 大多數更改是新功能,小錯誤修復或性能改進。比個人基準要快得多:linux
ack test_blah ~/code/ 104.66s user 4.82s system 99% cpu 1:50.03 total ag test_blah ~/code/ 4.67s user 4.58s system 286% cpu 3.227 total
Ack和Ag發現了相同的結果,可是Ag的速度是34倍(3.2秒vs 110秒)。個人~/code
目錄是大約8GB。感謝git / hg / ignore,Ag只搜索了700MB。git
還有各版本的性能圖表。github
mmap()
編輯而不是讀入緩衝區。pcre_study()
在每一個文件執行相同的正則表達式以前,Ag調用它。fnmatch()
忽略文件中的每一個模式,非正則表達式模式將加載到數組中並進行二進制搜索。我寫了幾篇博客文章,顯示了我如何改進性能。這些包括我如何添加pthreads,寫我本身的scandir()
,基準測試每一個版本以找到性能迴歸,並用gprof和Valgrind進行分析。正則表達式
brew install the_silver_searcher
要麼shell
port install the_silver_searcher
Ubuntu> = 13.10(Saucy)或Debian> = 8(Jessie)macos
apt-get install silversearcher-ag
Fedora 21及如下vim
yum install the_silver_searcher
Fedora 22+數組
dnf install the_silver_searcher
RHEL7 +
yum install epel-release.noarch the_silver_searcher
Gentoo的
emerge the_silver_searcher
拱
pacman -S the_silver_searcher
Slackware的
sbopkg -i the_silver_searcher
openSUSE的:
zypper install the_silver_searcher
CentOS的:
yum install the_silver_searcher
SUSE Linux Enterprise:按照這些簡單說明進行操做。
FreeBSD的
pkg install the_silver_searcher
OpenBSD系統/ NetBSD的
pkg_add the_silver_searcher
運行相關的setup-*.exe
,並在「Utils」類別中選擇「the_silver_searcher」。
安裝依賴關係(Automake,pkg-config,PCRE,LZMA):
MacOS的:
brew install automake pkg-config pcre xz
要麼
port install automake pkgconfig pcre xz
Ubuntu的/ Debian的:
apt-get install -y automake pkg-config libpcre3-dev zlib1g-dev liblzma-dev
Fedora的:
yum -y install pkgconfig automake gcc zlib-devel pcre-devel xz-devel
CentOS的:
yum -y groupinstall "Development Tools" yum -y install pcre-devel xz-devel
openSUSE的:
zypper source-install --build-deps-only the_silver_searcher
Windows:這很複雜 看到這個維基頁面。
運行構建腳本(它運行aclocal,automake等):
./build.sh
在Windows上(在msys / MinGW shell內):
make -f Makefile.w32
安裝:
sudo make install
GPG簽名的版本可在這裏。
構建版本tarball須要相同的依賴關係,除了automake和pkg-config。安裝依賴項後,只需運行:
./configure make make install
您可能須要以sudo
root身份使用或運行make install。
您可使用Ag與[ack.vim] []添加如下行到您的.vimrc
:
let g:ackprg = 'ag --nogroup --nocolor --column'
要麼:
let g:ackprg = 'ag --vimgrep'
哪一個有一樣的效果,但會報告每一場比賽。
您可使用ag.el做爲Ag的Emacs前端。參見:helm-ag。
TextMate用戶可使用Ag與我流行的AckMate插件的分支,這可讓您同時使用Ack和Ag進行搜索。若是您已經有AckMate,您只須要用Ag替換Ack,移動或刪除"~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"
並運行ln -s /usr/local/bin/ag "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"