Ein Tool zur Codesuche ähnlich wie ack
, mit Fokus auf Geschwindigkeit.
Kennen Sie C? Möchten Sie die Landwirtschaft verbessern? Ich lade Sie ein, sich mit mir zu paaren.
ack
..gitignore
und .hgignore
..ignore
Datei hinzu. (*hust* *.min.js
*hust*)ack
und alle Tasten befinden sich in der Startzeile!Ag ist jetzt ziemlich stabil. Bei den meisten Änderungen handelt es sich um neue Funktionen, kleinere Fehlerbehebungen oder Leistungsverbesserungen. In meinen Benchmarks ist es viel schneller als Ack:
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 und Ag kamen zu den gleichen Ergebnissen, aber Ag war 34-mal schneller (3,2 Sekunden gegenüber 110 Sekunden). Mein ~/code
-Verzeichnis ist etwa 8 GB groß. Dank git/hg/ignore hat Ag nur 700 MB davon durchsucht.
Es gibt auch Diagramme zur Leistung verschiedener Releases.
mmap()
bearbeitet, anstatt in einen Puffer gelesen zu werden.pcre_study()
auf, bevor es für jede Datei denselben regulären Ausdruck ausführt.fnmatch()
für jedes Muster in Ihren Ignorierdateien aufzurufen, werden Nicht-Regex-Muster in Arrays geladen und binär durchsucht. Ich habe mehrere Blogbeiträge geschrieben, die zeigen, wie ich die Leistung verbessert habe. Dazu gehört, wie ich pthreads hinzugefügt, mein eigenes scandir()
geschrieben, jede Revision einem Benchmarking unterzogen habe, um Leistungsrückgänge zu finden, und ein Profil mit gprof und Valgrind erstellt habe.
brew install the_silver_searcher
oder
port install the_silver_searcher
Ubuntu >= 13.10 (Saucy) oder Debian >= 8 (Jessie)
apt-get install silversearcher-ag
Fedora 21 und niedriger
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
Bogen
pacman -S the_silver_searcher
Slackware
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: Befolgen Sie diese einfachen Anweisungen.
FreeBSD
pkg install the_silver_searcher
OpenBSD/NetBSD
pkg_add the_silver_searcher
Win32/64
Inoffizielle tägliche Builds sind verfügbar.
Winget
winget install "The Silver Searcher"
Hinweise:
Schokoladend
choco install ag
MSYS2
pacman -S mingw-w64-{i686,x86_64}-ag
Cygwin
Führen Sie die entsprechende setup-*.exe
aus und wählen Sie „the_silver_searcher“ in der Kategorie „Utils“ aus.
Abhängigkeiten installieren (Automake, pkg-config, PCRE, LZMA):
macOS:
brew install automake pkg-config pcre xz
oder
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: Es ist kompliziert. Siehe diese Wiki-Seite.
Führen Sie das Build-Skript aus (das nur aclocal, automake usw. ausführt):
./build.sh
Unter Windows (innerhalb einer msys/MinGW-Shell):
make -f Makefile.w32
Installieren:
sudo make install
GPG-signierte Veröffentlichungen sind hier verfügbar.
Für die Erstellung von Release-Tarballs sind dieselben Abhängigkeiten erforderlich, mit Ausnahme von automake und pkg-config. Sobald Sie die Abhängigkeiten installiert haben, führen Sie einfach Folgendes aus:
./configure
make
make install
Möglicherweise müssen Sie für die Make-Installation sudo
verwenden oder als Root ausführen.
Sie können Ag mit ack.vim verwenden, indem Sie die folgende Zeile zu Ihrer .vimrc
hinzufügen:
let g:ackprg = 'ag --nogroup --nocolor --column'
oder:
let g:ackprg = 'ag --vimgrep'
Das hat den gleichen Effekt, meldet aber jede Übereinstimmung auf der Linie.
Sie können ag.el als Emacs-Frontend für Ag verwenden. Siehe auch: helm-ag.
TextMate-Benutzer können Ag mit meinem Fork des beliebten AckMate-Plugins verwenden, wodurch Sie sowohl Ack als auch Ag für die Suche verwenden können. Wenn Sie bereits über AckMate verfügen und nur Ack durch Ag ersetzen möchten, verschieben oder löschen Sie "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"
und führen Sie ln -s /usr/local/bin/ag "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"
aus ln -s /usr/local/bin/ag "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"