Команды Emacs для поиска в файлах



Я хочу искать во всех файлах из текущей папки для макроса CODE_INIT_PARAMETERS.
Я могу это сделать
M-x происходят CODE_INIT_PARAMETERS
но это показывает только записи из открытых буферов.



есть ли способ поиска всех файлов из текущей папки, из Emacs, без переключения на M-x shell, а затем grep ? Я хочу избежать grep, потому что для некоторых команд (M-x происходят) Emacs делает прыжки в оскорбительный код, и я тоже этого хочу.
Спасибо.

540   7  

7 ответов:

вы можете попробовать M-x rgrep.

Он будет просить:

  • каталог, в котором вы хотите искать рекурсивно
  • шаблон файла для файлов, которые вы хотите включить в поиск
  • шаблон, который вы хотите найти

в качестве дополнительного, он будет исключать частные каталоги управления версиями из вашего поиска (например, CVS,.СВН или .мерзавец.)

Emacs предоставляет встроенную команду:

M-x grep RET CODE_INIT_PARAMETERS *.c

'grep-find для поиска подкаталогов)

хотя я предпочитаю интерфейс внешнего пакета igrep (который предоставляет команды igrep и igrep-find).

Если вы открываете папку в dired и отмечаете все файлы (с помощью "m"), вы можете запустить " dired-do-search ("A" в моих привязках). Это будет искать все отмеченные файлы. Чтобы перейти к следующему, запустите tags-loop-continue (M-,)

Я настроил несколько функций elisp для обозначения различных подмножеств файлов (.H-файлы, .cpp-файлы и т. д.) и создать рекурсивный dired для поиска всего дерева...

это улучшение по предложению Трой Джексон.

M-x grep

вы увидите команду grep, например grep -nH -e

добавьте R к первому набору флагов (для рекурсивных) и поместите свой поисковый запрос после -e

grep -nHR -e CODE_INIT_PARAMETERS

хит RET. Результаты будут понятны Emacs - вы сможете щелкнуть или иным образом перейти к ним, например, M-x произойдет. Возможно, Вам потребуется поместить каталог поиска в конце команды:

grep -nHR -e CODE_INIT_PARAMETERS /path/to/root/of/search

M-x find-grep-dired также работает аналогично rgrep

в случаях, когда

  1. вы можете искать неоднократно;и
  2. etags будет работа

можно использовать etags и ссылки либо find-tag (привязан к M-. по умолчанию) или tags-search (нет привязки по умолчанию, но можно продолжить с M-,).

есть режим ack-grep для emacs, которые используют ack-grep инструмент, который специально разработан для" grepping " языков программирования и IMHO выглядит лучше, чем выход M-x grep.

но как упоминалось ранее etags должен быть правильный путь!

Comments

    Ничего не найдено.