Вы используете Vim. У вас есть инструмент для этого встроен.
Как и ожидалось, есть семь ответов, которые уже говорят, чтобы использовать grep
. Но я, кажется, пока единственный человек, который заметил по вашему вопросу, что вы используете vim
. Таким образом, хотя вы можете использовать grep
изнутри vim
, вы также можете использовать vim
встроенный инструмент. Это вызывается с помощью :vimgrep
команды.
Для поиска «всех исходных файлов C в текущем каталоге для вызовов функции toUpperCase()
» введите vim
команду
:vimgrep "\<toUpperCase\_s*(" *.c
Результирующий список совпадений автоматически загружается в список быстрых исправлений, доступный любому из них (см. Интерактивную справку для тонкой разницы)
:copen
:cwin
Чтобы найти определение функции , а не вызовы к ней, ctags
это инструмент, как упоминалось в Gilles
ответе , в сочетании с командами :tjump
или :tselect
.
Зачем использовать :vimgrep
?
Он-лайн help ( :help grep
) перечисляет несколько причин, которые я не буду здесь описывать. В дополнение к тем, сравнить действие :vimgrep
с этим в dietbuddha
ответ «S . dietbuddha
Командная строка разветвляет отдельный grep
процесс для каждого отдельного исходного файла Си. Это даже не использует, xargs
чтобы уменьшить эти накладные расходы. И вам все равно придется как-то анализировать выходные данные, чтобы вызвать ваш текстовый редактор в соответствующих исходных файлах после его завершения. :vimgrep
не разветвляется на несколько дополнительных процессов, а использование результата само по себе просто. При простом выборе одной из записей в результирующем списке быстрых исправлений курсор автоматически помещается на соответствующую строку соответствующего исходного файла.
На самом деле, он делает именно то, что вы написали, вы бы делали вручную, кроме как автоматически. Это автоматизированный способ выполнения тех же самых действий текстового редактора. Он загружает файл, как если бы он был загружен вручную, ищет в нем регулярное выражение (используя тот же синтаксис регулярного выражения, который вы уже использовали в другом месте vim
), записывает места, где происходят совпадения, а затем выгружает файл.