Инструмент поиска кода, похожий на ack
, с упором на скорость.
Знаешь ли ты С? Хотите улучшить АГ? Я приглашаю вас составить мне пару.
ack
..gitignore
и .hgignore
..ignore
. (*кхе* *.min.js
*кхе*)ack
, и все ключи находятся в домашней строке!Ag сейчас довольно стабилен. Большинство изменений — это новые функции, незначительные исправления ошибок или улучшения производительности. В моих тестах он намного быстрее, чем 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
Ак и Аг получили одинаковые результаты, но Аг был в 34 раза быстрее (3,2 секунды против 110 секунд). Мой каталог ~/code
занимает около 8 ГБ. Благодаря git/hg/ignore, Аг просмотрел только 700 МБ.
Также имеются графики производительности между выпусками.
mmap()
а не считываются в буфер.pcre_study()
перед выполнением одного и того же регулярного выражения для каждого файла.fnmatch()
для каждого шаблона в файлах игнорирования шаблоны, не являющиеся регулярными выражениями, загружаются в массивы и выполняются двоичный поиск. Я написал несколько сообщений в блоге, показывающих, как я улучшил производительность. В их число входит то, как я добавлял pthreads, писал свой собственный scandir()
, сравнивал каждую ревизию, чтобы обнаружить снижение производительности, и выполнял профилирование с помощью gprof и Valgrind.
brew install the_silver_searcher
или
port install the_silver_searcher
Ubuntu >= 13.10 (Дерзкий) или Debian >= 8 (Джесси)
apt-get install silversearcher-ag
Федора 21 и ниже
yum install the_silver_searcher
Федора 22+
dnf install the_silver_searcher
RHEL7+
yum install epel-release.noarch the_silver_searcher
Генту
emerge -a sys-apps/the_silver_searcher
Арка
pacman -S the_silver_searcher
Слаквар
sbopkg -i the_silver_searcher
openSUSE
zypper install the_silver_searcher
ЦентОС
yum install the_silver_searcher
NixOS/Nix/Nixpkgs
nix-env -iA silver-searcher
SUSE Linux Enterprise: следуйте этим простым инструкциям.
FreeBSD
pkg install the_silver_searcher
OpenBSD/NetBSD
pkg_add the_silver_searcher
Win32/64
Доступны неофициальные ежедневные сборки.
крылышко
winget install "The Silver Searcher"
Примечания:
Шоколадный
choco install ag
МСИС2
pacman -S mingw-w64-{i686,x86_64}-ag
Сигвин
Запустите соответствующий setup-*.exe
и выберите «the_silver_searcher» в категории «Утилиты».
Установите зависимости (Automake, pkg-config, PCRE, LZMA):
macOS:
brew install automake pkg-config pcre xz
или
port install automake pkgconfig pcre xz
Убунту/Дебиан:
apt-get install -y automake pkg-config libpcre3-dev zlib1g-dev liblzma-dev
Федора:
yum -y install pkgconfig automake gcc zlib-devel pcre-devel xz-devel
ЦентОС:
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: Это сложно. См. эту вики-страницу.
Запустите скрипт сборки (который просто запускает aclocal, automake и т. д.):
./build.sh
В Windows (внутри оболочки msys/MinGW):
make -f Makefile.w32
Сделать установку:
sudo make install
Релизы, подписанные GPG, доступны здесь.
Для создания архивов релизов требуются те же зависимости, за исключением automake и pkg-config. После установки зависимостей просто запустите:
./configure
make
make install
Возможно, вам придется использовать sudo
или запустить его от имени пользователя root для установки make.
Вы можете использовать Ag с ack.vim, добавив следующую строку в ваш .vimrc
:
let g:ackprg = 'ag --nogroup --nocolor --column'
или:
let g:ackprg = 'ag --vimgrep'
Это имеет тот же эффект, но будет сообщать о каждом совпадении на линии.
Вы можете использовать ag.el в качестве интерфейса Emacs для Ag. См. также: шлем-аг.
Пользователи TextMate могут использовать Ag с моей версией популярного плагина AckMate, который позволяет использовать для поиска как Ack, так и Ag. Если у вас уже есть AckMate, вам просто нужно заменить Ack на Ag, переместите или удалите "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"
и запустите ln -s /usr/local/bin/ag "~/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack"