Команды Emacs для поиска в файлах
Я хочу искать во всех файлах из текущей папки для макроса CODE_INIT_PARAMETERS.
Я могу это сделать
M-x происходят CODE_INIT_PARAMETERS
но это показывает только записи из открытых буферов.
есть ли способ поиска всех файлов из текущей папки, из Emacs, без переключения на M-x shell, а затем grep ? Я хочу избежать grep, потому что для некоторых команд (M-x происходят) Emacs делает прыжки в оскорбительный код, и я тоже этого хочу.
Спасибо.
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
в случаях, когда
- вы можете искать неоднократно;и
- etags будет работа
можно использовать
etagsи ссылки либоfind-tag(привязан кM-.по умолчанию) илиtags-search(нет привязки по умолчанию, но можно продолжить сM-,).
есть режим ack-grep для emacs, которые используют ack-grep инструмент, который специально разработан для" grepping " языков программирования и IMHO выглядит лучше, чем выход M-x grep.
но как упоминалось ранее etags должен быть правильный путь!
Comments