Как искать текст среди c файлов в каталоге - PullRequest
2 голосов
/ 02 февраля 2011

Я просмотрел несколько похожих вопросов, но либо не понял их ответа, либо мой вопрос отличается от их.Итак, у меня есть проект, содержащий много подкаталогов и разных типов файлов.Я хотел бы искать имя функции только среди этих файлов .C.

Некоторая информация в Интернете предлагает использовать «Esc x dired-do-query-replace-regexp».Тем не менее, это будет искать не только файлы C, но также и другие файлы, такие как .elf, что не помогает в моем случае.Другие люди предлагают использовать функцию TAG, но мне потребуется ввести «etags * .c» для каждого подкаталога, что также невозможно.

Как мне это сделать, работая над этим масштабным программным проектом?1005 *

Спасибо, Ли

Ответы [ 6 ]

3 голосов
/ 02 февраля 2011

Используйте ack-grep на linux

ack-grep "keyword" -G *.c
1 голос
/ 03 февраля 2011

Для разведения find и grep есть функция find-grep , в которой вы можете изменить строку вызова на find . -name *.c и т. Д. Сделайте ее функцией, если хотите. Тогда вы используете, например. С-х ` и др. для навигации по результатам.

Для поиска среди файлов в одном каталоге я использую lgrep , он запрашивает, в каких файлах искать.

1 голос
/ 02 февраля 2011

если вы работаете в Linux, вы можете использовать grep для поиска файлов с определенным текстом в них.Затем вы должны сделать это вне emacs, в вашей командной оболочке / командной строке.Вот хороший синтаксис:

grep --color=auto --include=*.c -iRnH 'string to search for' /dir/to/search/

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

grep --color=auto --include=*.c -iRnH 'string to search for' .

часть - color = auto выделяет некоторый текст. - include = *. C - это часть, которая указывает, какие файлы искать. в этом случае только файлы с расширением C. флаг i делает вещи нечувствительными к регистру, флаг R делает поиск рекурсивным, флаг n добавляет номер строки в отчет, а флаг H добавляетпуть к файлу отчета.

1 голос
/ 02 февраля 2011

Мое любимое: igrep-find, найдено в упаковке igrep.el . Использование:

M-x igrep-find some_thing RET *.C

Есть встроенный grep-find, документы здесь , но я считаю его неудобным для использования.

Для более общего ответа см. Аналогичный вопрос: Использование Emacs для больших больших проектов .

0 голосов
/ 24 сентября 2017

Попробуйте с dired : поместите курсор на имя каталога для поиска, введите A и в минибуфере текст для поиска.

0 голосов
/ 02 февраля 2011

Вы можете использовать cscope и xcscope.el: http://www.emacswiki.org/emacs/CScopeAndEmacs

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