Un outil de recherche de code similaire à ack
, axé sur la vitesse.
Connaissez-vous C? Vous souhaitez améliorer l'agriculture ? Je vous invite à faire équipe avec moi.
ack
..gitignore
et .hgignore
..ignore
. (*toux* *.min.js
*toux*)ack
et toutes les touches se trouvent sur la ligne d'accueil !Ag est assez stable maintenant. La plupart des modifications sont de nouvelles fonctionnalités, des corrections de bugs mineurs ou des améliorations de performances. C'est beaucoup plus rapide qu'Ack dans mes benchmarks :
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 et Ag ont trouvé les mêmes résultats, mais Ag était 34 fois plus rapide (3,2 secondes contre 110 secondes). Mon répertoire ~/code
fait environ 8 Go. Grâce à git/hg/ignore, Ag n'en a recherché que 700 Mo.
Il existe également des graphiques de performances entre les versions.
mmap()
au lieu d'être lus dans un tampon.pcre_study()
avant d'exécuter la même expression régulière sur chaque fichier.fnmatch()
sur chaque modèle de vos fichiers ignorés, les modèles non regex sont chargés dans des tableaux et recherchés en binaire. J'ai écrit plusieurs articles de blog montrant comment j'ai amélioré les performances. Il s'agit notamment de la façon dont j'ai ajouté des pthreads, écrit mon propre scandir()
, comparé chaque révision pour trouver des régressions de performances et profilé avec gprof et Valgrind.
brew install the_silver_searcher
ou
port install the_silver_searcher
Ubuntu >= 13.10 (Saucy) ou Debian >= 8 (Jessie)
apt-get install silversearcher-ag
Fedora 21 et versions antérieures
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
Cambre
pacman -S the_silver_searcher
Slackware
sbopkg -i the_silver_searcher
ouvertSUSE
zypper install the_silver_searcher
CentOS
yum install the_silver_searcher
NixOS/Nix/Nixpkgs
nix-env -iA silver-searcher
SUSE Linux Enterprise : suivez ces instructions simples.
GratuitBSD
pkg install the_silver_searcher
OpenBSD/NetBSD
pkg_add the_silver_searcher
Win32/64
Des versions quotidiennes non officielles sont disponibles.
aile
winget install "The Silver Searcher"
Remarques :
Chocolaté
choco install ag
MSYS2
pacman -S mingw-w64-{i686,x86_64}-ag
Cygwin
Exécutez le setup-*.exe
approprié et sélectionnez "the_silver_searcher" dans la catégorie "Utils".
Installer les dépendances (Automake, pkg-config, PCRE, LZMA) :
macOS :
brew install automake pkg-config pcre xz
ou
port install automake pkgconfig pcre xz
Ubuntu/Debian :
apt-get install -y automake pkg-config libpcre3-dev zlib1g-dev liblzma-dev
Feutre:
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
ouvertSUSE :
zypper source-install --build-deps-only the_silver_searcher
Windows : c'est compliqué. Voir cette page wiki.
Exécutez le script de build (qui exécute simplement aclocal, automake, etc.) :
./build.sh
Sous Windows (dans un shell msys/MinGW) :
make -f Makefile.w32
Effectuer l'installation :
sudo make install
Les versions signées GPG sont disponibles ici.
La création d'archives tar de version nécessite les mêmes dépendances, à l'exception de automake et pkg-config. Une fois que vous avez installé les dépendances, exécutez simplement :
./configure
make
make install
Vous devrez peut-être utiliser sudo
ou exécuter en tant que root pour l'installation de make.
Vous pouvez utiliser Ag avec ack.vim en ajoutant la ligne suivante à votre .vimrc
:
let g:ackprg = 'ag --nogroup --nocolor --column'
ou:
let g:ackprg = 'ag --vimgrep'
Ce qui a le même effet mais signalera chaque correspondance en ligne.
Vous pouvez utiliser ag.el comme interface Emacs pour Ag. Voir aussi : helm-ag.
Les utilisateurs de TextMate peuvent utiliser Ag avec mon fork du populaire plugin AckMate, qui vous permet d'utiliser à la fois Ack et Ag pour la recherche. Si vous avez déjà AckMate, vous souhaitez simplement remplacer Ack par Ag, déplacez ou supprimez "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"
et exécutez ln -s /usr/local/bin/ag "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"