Alat pencarian kode yang mirip dengan ack
, dengan fokus pada kecepatan.
Tahukah kamu C? Ingin meningkatkan ag? Saya mengundang Anda untuk berpasangan dengan saya.
ack
..gitignore
dan .hgignore
Anda..ignore
. (*batuk* *.min.js
*batuk*)ack
, dan semua kunci ada di baris beranda!Ag cukup stabil sekarang. Sebagian besar perubahan berupa fitur baru, perbaikan bug kecil, atau peningkatan kinerja. Ini jauh lebih cepat daripada Ack di benchmark saya:
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 dan Ag menemukan hasil yang sama, namun Ag 34x lebih cepat (3,2 detik vs 110 detik). Direktori ~/code
saya sekitar 8GB. Berkat git/hg/ignore, Ag hanya mencari 700MB saja.
Ada juga grafik kinerja di seluruh rilis.
mmap()
diedit alih-alih dibaca ke dalam buffer.pcre_study()
sebelum menjalankan regex yang sama pada setiap file.fnmatch()
pada setiap pola dalam file abaikan Anda, pola non-regex dimuat ke dalam array dan pencarian biner. Saya telah menulis beberapa postingan blog yang menunjukkan bagaimana saya meningkatkan kinerja. Ini termasuk cara saya menambahkan pthreads, menulis scandir()
saya sendiri, membandingkan setiap revisi untuk menemukan regresi kinerja, dan membuat profil dengan gprof dan Valgrind.
brew install the_silver_searcher
atau
port install the_silver_searcher
Ubuntu >= 13.10 (Caucy) atau Debian >= 8 (Jessie)
apt-get install silversearcher-ag
Fedora 21 dan lebih rendah
yum install the_silver_searcher
Fedora 22+
dnf install the_silver_searcher
RHEL7+
yum install epel-release.noarch the_silver_searcher
Gentoo
emerge -a sys-apps/the_silver_searcher
Lengkungan
pacman -S the_silver_searcher
perangkat lunak kendur
sbopkg -i the_silver_searcher
openSUSE
zypper install the_silver_searcher
CentOS
yum install the_silver_searcher
NixOS/Nix/Nixpkgs
nix-env -iA silver-searcher
SUSE Linux Enterprise: Ikuti petunjuk sederhana ini.
FreeBSD
pkg install the_silver_searcher
OpenBSD/NetBSD
pkg_add the_silver_searcher
Menang32/64
Tersedia versi harian tidak resmi.
sayap
winget install "The Silver Searcher"
Catatan:
coklat
choco install ag
MSYS2
pacman -S mingw-w64-{i686,x86_64}-ag
Cygwin
Jalankan setup-*.exe
yang relevan, dan pilih "the_silver_searcher" di kategori "Utils".
Instal dependensi (Automake, pkg-config, PCRE, LZMA):
macOS:
brew install automake pkg-config pcre xz
atau
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 zlib-devel
openSUSE:
zypper source-install --build-deps-only the_silver_searcher
Windows: Ini rumit. Lihat halaman wiki ini.
Jalankan skrip build (yang hanya menjalankan aclocal, automake, dll):
./build.sh
Di Windows (di dalam shell msys/MinGW):
make -f Makefile.w32
Lakukan instalasi:
sudo make install
Rilis bertanda tangan GPG tersedia di sini.
Membangun tarball rilis memerlukan dependensi yang sama, kecuali untuk automake dan pkg-config. Setelah Anda menginstal dependensi, jalankan saja:
./configure
make
make install
Anda mungkin perlu menggunakan sudo
atau run as root untuk make install.
Anda dapat menggunakan Ag dengan ack.vim dengan menambahkan baris berikut ke .vimrc
:
let g:ackprg = 'ag --nogroup --nocolor --column'
atau:
let g:ackprg = 'ag --vimgrep'
Yang memiliki efek yang sama tetapi akan melaporkan setiap pertandingan yang dipertaruhkan.
Anda dapat menggunakan ag.el sebagai front-end Emacs untuk Ag. Lihat juga: helm-ag.
Pengguna TextMate dapat menggunakan Ag dengan fork saya dari plugin AckMate yang populer, yang memungkinkan Anda menggunakan Ack dan Ag untuk pencarian. Jika Anda sudah memiliki AckMate, Anda hanya ingin mengganti Ack dengan Ag, pindahkan atau hapus "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"
dan jalankan ln -s /usr/local/bin/ag "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"