Как вы ищите весь исходный код в Vim? - PullRequest
41 голосов
/ 29 марта 2009

При использовании Vim и наличии каталога, заполненного кодом (например, ~ / trunk /) с несколькими подкаталогами, существует ли способ grep / искать экземпляры текста / регулярных выражений по всему исходному коду?

На данный момент я использую:

:lcd ~/trunk
:grep "pattern" *.py */*.py */*/*.py */*/*/*.py

(Очевидно, я ограничиваю это файлами Python, что является другой проблемой, но примечательно, что в идеале я бы хотел ограничить поиск файлами с определенными расширениями.)

Ответы [ 7 ]

40 голосов
/ 29 марта 2009
:vimgrep "pattern" ~/trunk/**/*.py
:copen 20

Если у вас довольно большой проект, я бы рекомендовал вам использовать cscope и vim plugins . Вот один, разработанный для обработки больших проектов: SourceCodeObedience

Существует краткое описание того, как получить текст , используя SourceCodeObedience .

7 голосов
/ 29 марта 2009

Для этого я использую 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
6 голосов
/ 29 марта 2009

Вы можете проверить :vimgrep и :grep в документации vim. :vimgrep использует собственную функцию поиска по шаблону в vim и считывает все файлы в буферы vim. :grep по умолчанию ссылается на внешний grep utlity в вашей системе, но вы можете изменить поведение, установив параметр grepprg. Вот ссылка на онлайн документы:

http://vimdoc.sourceforge.net/htmldoc/quickfix.html#grep

Подробнее об этом, а также о некоторых других возможностях можно прочитать в подсказке "Поиск в файлах в Vim" на вики-сайте Vim Tips:

http://vim.wikia.com/wiki/Find_in_files_within_Vim

4 голосов
/ 31 марта 2009

Установите grepprg на Ack , затем используйте :grep для поиска с помощью Ack.

Или используйте ctags.

3 голосов
/ 14 июня 2015

Ag - хороший вариант для рекурсивного поиска по шаблону.

https://github.com/rking/ag.vim

2 голосов
/ 29 марта 2009

Вы можете использовать : vimgrep Т.е. :

  :vimgrep /pattern/ **/*.py

Проверьте этот Vim Совет:

Также обратите внимание на grep.vim , это плагин, который объединяет инструменты grep, fgrep, egrep и agrep с Vim и позволяет искать шаблон в одном или нескольких файлах и переходить им ...

1 голос
/ 30 марта 2009

Вы можете сгенерировать индекс исходного кода, используя ctags , а затем VIM может использовать это для плавной навигации по базе кода. Это исходный код, который позволяет переходить непосредственно к объявлениям методов и т. Д.

Вам нужно регенерировать файлы ctags очень часто, но вы можете сделать это как часть вашего процесса сборки. Это должно быть довольно быстро, если ваша кодовая база не достаточно велика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...