簡體   English   中英

Emacs命令用於搜索文件

[英]Emacs command for search in files

我想在當前文件夾中搜索宏CODE_INIT_PARAMETERS的所有文件。 我可以做Mx出現CODE_INIT_PARAMETERS但這只顯示來自開放緩沖區的條目。

有沒有辦法從Emacs搜索當前文件夾中的所有文件,而無需切換到Mx shell然后grep? 我想避免使用grep,因為對於某些命令(Mx發生),Emacs會跳轉到違規代碼,我也想要這樣做。 謝謝。

你可以試試Mx rgrep

它會要求:

  • 要遞歸搜索的目錄
  • 要包含在搜索中的文件的文件模式
  • 您要搜索的模式

作為額外的,它將從搜索中排除源控制私有目錄(如CVS,.svn或.git)。

Emacs提供了一個內置命令:

M-x grep RET CODE_INIT_PARAMETERS *.c

(和'grep-find搜索子目錄)

雖然我更喜歡外部包igrep (它提供命令igrepigrep-find )提供的igrep

如果您在dired中打開一個文件夾,並標記所有文件(使用'm'),您可以運行'dired-do-search(我的綁定中的'A')。 這將搜索所有標記的文件。 要進入下一個,運行tags-loop-continue(M-,)

我已經設置了幾個elisp函數來標記文件的各種子集(.h文件,.cpp文件等)並創建一個遞歸的dired來搜索整個樹...

這是Trey Jackson建議的改進。

Mx grep

您將看到grep命令,例如grep -nH -e

將R添加到第一組標志(用於遞歸),並將搜索項放在-e之后

grep -nHR -e CODE_INIT_PARAMETERS

點擊RET。 Emacs可以理解結果 - 您可以點擊或以其他方式導航到它們,就像Mx一樣。 您可能需要將搜索目錄放在命令的末尾:

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

Mx find-grep-dired的工作方式與rgrep類似

在哪些情況下

  1. 你可能會反復搜索;
  2. etags 起作用

您可以考慮使用etags並調用find-tag (默認綁定到M-. )或tags-search (沒有默認綁定但可以繼續使用M-, )。

對於使用ack-grep工具的emacs也有ack-grep模式 ,該工具專為''grepping''編程語言而設計,而IMHO看起來比Mx grep的輸出更好。

但如前所述,etags應該是正確的方法!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM