Una herramienta de búsqueda de código similar a ack
, centrada en la velocidad.
¿Conoces a C? ¿Quieres mejorar la agricultura? Te invito a hacer pareja conmigo.
ack
..gitignore
y .hgignore
..ignore
. (*tos* *.min.js
*tos*)ack
y todas las claves están en la fila de inicio!Ag es bastante estable ahora. La mayoría de los cambios son nuevas funciones, correcciones de errores menores o mejoras de rendimiento. Es mucho más rápido que Ack en mis puntos de referencia:
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 y Ag encontraron los mismos resultados, pero Ag fue 34 veces más rápido (3,2 segundos frente a 110 segundos). Mi directorio ~/code
tiene aproximadamente 8 GB. Gracias a git/hg/ignore, Ag solo buscó 700 MB de eso.
También hay gráficos de rendimiento entre versiones.
mmap()
en lugar de leerse en un búfer.pcre_study()
antes de ejecutar la misma expresión regular en cada archivo.fnmatch()
en cada patrón en sus archivos ignorados, los patrones que no son expresiones regulares se cargan en matrices y se realizan búsquedas binarias. He escrito varias publicaciones de blog que muestran cómo he mejorado el rendimiento. Estos incluyen cómo agregué pthreads, escribí mi propio scandir()
, comparé cada revisión para encontrar regresiones de rendimiento y realicé perfiles con gprof y Valgrind.
brew install the_silver_searcher
o
port install the_silver_searcher
Ubuntu >= 13.10 (Saucy) o Debian >= 8 (Jessie)
apt-get install silversearcher-ag
Fedora 21 y anteriores
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
Arco
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: siga estas sencillas instrucciones.
FreeBSD
pkg install the_silver_searcher
OpenBSD/NetBSD
pkg_add the_silver_searcher
Win32/64
Hay compilaciones diarias no oficiales disponibles.
ala
winget install "The Silver Searcher"
Notas:
chocolateado
choco install ag
MSYS2
pacman -S mingw-w64-{i686,x86_64}-ag
Cygwin
Ejecute el setup-*.exe
correspondiente y seleccione "the_silver_searcher" en la categoría "Utilidades".
Instalar dependencias (Automake, pkg-config, PCRE, LZMA):
MacOS:
brew install automake pkg-config pcre xz
o
port install automake pkgconfig pcre xz
Ubuntu/Debian:
apt-get install -y automake pkg-config libpcre3-dev zlib1g-dev liblzma-dev
Fedor:
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
abiertoSUSE:
zypper source-install --build-deps-only the_silver_searcher
Windows: Es complicado. Vea esta página wiki.
Ejecute el script de compilación (que simplemente ejecuta aclocal, automake, etc.):
./build.sh
En Windows (dentro de un shell msys/MinGW):
make -f Makefile.w32
Realizar instalación:
sudo make install
Las versiones firmadas por GPG están disponibles aquí.
La creación de archivos comprimidos de lanzamiento requiere las mismas dependencias, excepto automake y pkg-config. Una vez que haya instalado las dependencias, simplemente ejecute:
./configure
make
make install
Es posible que necesites usar sudo
o ejecutar como root para realizar la instalación.
Puede usar Ag con ack.vim agregando la siguiente línea a su .vimrc
:
let g:ackprg = 'ag --nogroup --nocolor --column'
o:
let g:ackprg = 'ag --vimgrep'
Lo cual tiene el mismo efecto pero informará cada coincidencia en la línea.
Puede utilizar ag.el como interfaz de Emacs para Ag. Ver también: helm-ag.
Los usuarios de TextMate pueden usar Ag con mi bifurcación del popular complemento AckMate, que les permite usar Ack y Ag para realizar búsquedas. Si ya tiene AckMate, solo desea reemplazar Ack con Ag, mueva o elimine "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"
y ejecute ln -s /usr/local/bin/ag "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"