Поиск только в открытых буферах - это хорошо, но может наступить момент, когда вы захотите выполнить поиск по всему проекту. Это может быть быстрее и проще, чем вы думаете!
Поиск по проекту
grep
стандартный поисковый инструмент Unix Стоит упомянуть из-за его повсеместности. Уже интегрированы в Vim через :grep
команду. например :grep -r 'foo'
. См :h :grep
.
- Ack работает быстрее, чем обычный grep, потому что он пропускает каталоги VCS, двоичные файлы и может искать определенный тип файлов, например
--perl
. Для интеграции Vim см. Ack.vim
- Ag the Silver Surfer - это инструмент для поиска кода, похожий на ack, но более быстрый. Плагин Vim: Ag.vim
git grep
очень быстро ищет репозиторий Fugitive.vim предоставляет :Ggrep
.
- Ripgrep даже быстрее, чем Ag и
git grep
. Можно использовать и с :grep
.
Я рекомендую оба ripgrep, Ag, и так git grep
как они все очень быстрые. Я искал более 4700+ менее чем за 1 секунду. Это довольно сложно победить ripgrep.
Чтобы протестировать один из этих вариантов без плагина, или вы просто не хотите плагин, вы можете соответственно настроить свой 'grepprg'
вариант. например set grepprg=ag\ --vimgrep
или set grepprg=rg\ --vimgrep
. Смотрите :h 'grepprg'
и :h 'grepformat'
для получения дополнительной информации. Теперь вы можете искать через :grep
. например :grep 'foo'
.
В качестве последнего запасного варианта вы можете использовать :vimgrep
его, так как он доступен на всех системах, в которых доступен Vim. Смотрите :h :vimg
для получения дополнительной помощи.
Список быстрых исправлений
Поскольку большинство этих опций используют список быстрых исправлений, я предлагаю вам использовать более удобные сопоставления для пересечения списка быстрых исправлений. Я использую неповрежденный плагин Тима Поупа, который использует ]q
и [q
для :cnext
и :cprev
соответственно. Некоторые люди , как QuickFix открыть после поиска выполняется , то добавьте следующие строки в ~/.vimrc
файл: autocmd QuickFixCmdPost *grep* cwindow
. Вы также можете вручную открыть список QuickFix через :copen
.
Хотите еще более быстрых «поисков»?
Вам нужно будет использовать какой-то инструмент, который использует готовые индексы, такие как ctags , cscope или GNU global .
- Vim имеет встроенную поддержку ГКДА через
:tag
, <c-]>
и многие другие команды и опции. См :h tags
. Также может захотеть прочитать Effortless Ctags с Git или заглянуть в плагин Gutentags
- Поддержка Cscope также встроена и может использоваться через
:cscope
команду. Видеть:h cscope
Больше помощи
Я хотел бы начать с этого хорошего эпизода Vimcast : поиск нескольких файлов с:vimgrep
.
Для получения дополнительной помощи Vim см. Документацию:
:h grep
:h :vimgrep
:h :grep
:h 'grepprg'
:h 'grepformat'
:h quickfix
:h :cnext
:h tags
:h cscope