Как искать весь исходный код в Vim?
При использовании Vim и заданной каталогом, заполненным кодом (например, ~/trunk/), с рядом подкаталогов, существует ли способ grep/search для экземпляров текста/регулярных выражений по всему исходному коду?
В данный момент я использую:
:lcd ~/trunk
:grep "pattern" *.py */*.py */*/*.py */*/*/*.py
(Очевидно, я ограничиваю это файлами Python, что является другой проблемой, но стоит отметить, что в идеале я хотел бы ограничить поиск файлов конкретными расширениями.)
Ответы
Ответ 1
:vimgrep "pattern" ~/trunk/**/*.py
:copen 20
Если у вас есть довольно большой проект, я бы рекомендовал вам использовать cscope и vim плагины. Вот один из них предназначен для обработки больших проектов: SourceCodeObedience
Существует краткое описание grep text с помощью SourceCodeObedience.
Ответ 2
Я использую для этого grep.
grep -IirlZ "pattern" .|xargs -0 vim
-I: ignore binary
-i: ignore case
-r: recursive
-l: print file name only
-Z: print \0 after each file name
Ответ 3
Вы можете проверить :vimgrep
и :grep
в документации vim. :vimgrep
использует функцию поиска собственных шаблонов vim и считывает все файлы в буферы vim. :grep
по умолчанию ссылается на внешнюю grep
utlity в вашей системе, но вы можете изменить поведение, установив опцию grepprg
. Здесь ссылка на онлайн-документы:
http://vimdoc.sourceforge.net/htmldoc/quickfix.html#grep
Там больше информации об этом, а также некоторые другие варианты в подсказке "Найти файлы в Vim" в Vim Tips Wiki:
http://vim.wikia.com/wiki/Find_in_files_within_Vim
Ответ 4
Вы можете использовать :vimgrep i.e.:
:vimgrep /pattern/ **/*.py
Проверьте этот совет Vim:
Также посмотрите grep.vim, это плагин, который объединяет инструменты grep, fgrep, egrep и agrep с Vim и позволяет искать шаблон в одном или нескольких файлах и прыгать
им...
Ответ 5
Установите grepprg
в Ack, затем используйте :grep
для поиска с помощью Ack.
Или используйте ctags.
Ответ 6
Ag
- хороший вариант для рекурсивного поиска шаблона.
https://github.com/rking/ag.vim
Ответ 7
Вы можете сгенерировать индекс исходного кода, используя ctags, а затем VIM может используйте это для беспрепятственной навигации по базе кода. Исходный код знает, что вы можете напрямую перейти к объявлениям методов и т.д.
Вам нужно регенерировать файлы ctags так часто, но вы можете сделать это как часть своего процесса make. Это должно быть довольно быстро, если ваша база кода не является значительной.