Polecenie Emacs do wyszukiwania w plikach
Chcę wyszukać we wszystkich plikach bieżącego folderu makro CODE_INIT_PARAMETERS. Mogę to zrobić. M-x-kod_init_parametry ale to pokazuje tylko wpisy z otwartych buforów.
Czy Jest jakiś sposób na przeszukiwanie wszystkich plików z bieżącego folderu, z Emacsa, bez przełączania NA m-x shell, a następnie grep ? Chcę unikać grepa, bo dla niektórych komend (m-x) Emacs robi skoki do kodu, I tego też chcę. Dzięki.
7 answers
Możesz spróbować M-x rgrep
.
Poprosi o:
- katalog, w którym chcesz przeszukiwać rekurencyjnie
- Wzór pliku dla plików, które chcesz włączyć w wyszukiwaniu
- wzór, który chcesz wyszukać
Jako dodatek, wyłączy prywatne katalogi source control z twojego Wyszukiwania (jak CVS, .svn lub .git).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 09:09:41
Emacs udostępnia wbudowane polecenie:
M-x grep RET CODE_INIT_PARAMETERS *.c
(i 'grep-find
do przeszukiwania podkatalogów)
Choć wolę interfejs dostarczany przez zewnętrzny pakiet igrep
(który dostarcza polecenia igrep
i igrep-find
).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-27 06:08:23
Jeśli otworzysz folder w dired i oznaczysz wszystkie pliki (za pomocą 'm'), Możesz uruchomić ' dired-do-search ('a' w moich powiązaniach). Spowoduje to przeszukanie wszystkich zaznaczonych plików. Aby przejść do następnego, Uruchom znaczniki-loop-continue (M -,)
Ustawiłem kilka funkcji elisp do oznaczania różnych podzbiorów plików (.pliki h,pliki cpp, itp.) i stworzyć rekurencyjny dired do przeszukiwania całego drzewa...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-25 21:48:30
To ulepszenie sugestii Treya Jacksona.
M-x grep
Zobaczysz polecenie grep, np. grep -nH -e
Dodaj R do pierwszego zestawu FLAG (dla rekurencyjnego) i wpisz szukany termin po-e
grep -nHR -e CODE_INIT_PARAMETERS
Hit RET. Wyniki będą zrozumiałe dla Emacsa - będziesz mógł kliknąć lub w inny sposób nawigować do nich, jak M-x. Może być konieczne umieszczenie katalogu wyszukiwania na końcu polecenia:
grep -nHR -e CODE_INIT_PARAMETERS /path/to/root/of/search
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-26 02:45:00
M-x find-grep-dired działa również podobnie jak rgrep
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-24 22:08:16
W przypadkach, gdy
- możesz szukać wielokrotnie; i
- etags będzie działać
Możesz rozważyć użycie etags
i wywołanie find-tag
(domyślnie związane z M-.
) lub tags-search
(Brak domyślnego wiązania, ale może być kontynuowane przez M-,
).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-27 19:59:33
Istnieje również tryb ACK-grep dla Emacsa, który używa narzędzia ACK-grep, które jest specjalnie zaprojektowane do "grepowania" języków programowania i IMHO wygląda ładniej niż wyjście m-x grep.
Ale jak wspomniano wcześniej etags powinien być właściwy sposób!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-31 05:32:30