Поиск только в открытых буферах - это хорошо, но может наступить момент, когда вы захотите выполнить поиск по всему проекту. Это может быть быстрее и проще, чем вы думаете!
Поиск по проекту
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