Uma ferramenta de busca de código semelhante ao ack
, com foco na velocidade.
Você conhece C? Quer melhorar ag? Convido você a formar par comigo.
ack
..gitignore
e .hgignore
..ignore
. (*tosse* *.min.js
*tosse*)ack
e todas as chaves estão na linha inicial!Ag está bastante estável agora. A maioria das mudanças são novos recursos, pequenas correções de bugs ou melhorias de desempenho. É muito mais rápido que o Ack nos meus 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 e Ag encontraram os mesmos resultados, mas Ag foi 34x mais rápido (3,2 segundos vs 110 segundos). Meu diretório ~/code
tem cerca de 8 GB. Graças ao git/hg/ignore, Ag pesquisou apenas 700 MB disso.
Também há gráficos de desempenho entre os lançamentos.
mmap()
em vez de lidos em um buffer.pcre_study()
antes de executar o mesmo regex em cada arquivo.fnmatch()
em cada padrão em seus arquivos ignorados, os padrões não-regex são carregados em matrizes e pesquisados binariamente. Escrevi vários posts no blog mostrando como melhorei o desempenho. Isso inclui como adicionei pthreads, escrevi meu próprio scandir()
, comparei cada revisão para encontrar regressões de desempenho e criei perfis com gprof e Valgrind.
brew install the_silver_searcher
ou
port install the_silver_searcher
Ubuntu >= 13.10 (picante) ou Debian >= 8 (Jessie)
apt-get install silversearcher-ag
Fedora 21 e inferior
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 instruções simples.
FreeBSD
pkg install the_silver_searcher
OpenBSD/NetBSD
pkg_add the_silver_searcher
Win32/64
Compilações diárias não oficiais estão disponíveis.
asa
winget install "The Silver Searcher"
Notas:
Chocolate
choco install ag
MSYS2
pacman -S mingw-w64-{i686,x86_64}-ag
Cygwin
Execute o setup-*.exe
relevante e selecione "the_silver_searcher" na categoria "Utilitários".
Instale dependências (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
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
openSUSE:
zypper source-install --build-deps-only the_silver_searcher
Windows: é complicado. Veja esta página wiki.
Execute o script de construção (que executa apenas aclocal, automake, etc):
./build.sh
No Windows (dentro de um shell msys/MinGW):
make -f Makefile.w32
Faça a instalação:
sudo make install
Versões assinadas pelo GPG estão disponíveis aqui.
Construir tarballs de lançamento requer as mesmas dependências, exceto automake e pkg-config. Depois de instalar as dependências, basta executar:
./configure
make
make install
Pode ser necessário usar sudo
ou executar como root para fazer a instalação.
Você pode usar Ag com ack.vim adicionando a seguinte linha ao seu .vimrc
:
let g:ackprg = 'ag --nogroup --nocolor --column'
ou:
let g:ackprg = 'ag --vimgrep'
O que tem o mesmo efeito, mas reportará todas as partidas na linha.
Você pode usar ag.el como front-end do Emacs para Ag. Veja também: helm-ag.
Os usuários do TextMate podem usar Ag com meu fork do popular plugin AckMate, que permite usar Ack e Ag para pesquisa. Se você já possui o AckMate, deseja apenas substituir Ack por Ag, mova ou exclua "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"
e execute ln -s /usr/local/bin/ag "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"