我想从当前文件夹的所有文件中搜索宏CODE_INIT_PARAMETERS。 我可以做 M-x发生CODE_INIT_PARAMETERS 但这只显示来自开放缓冲区的条目。用于搜索文件的Emacs命令
有什么方法可以从Emacs当前文件夹中搜索所有文件,而无需切换到M-x shell然后grep?我想避免grep,因为对于某些命令(M-x发生),Emacs会跳转到有问题的代码,我也想这样做。 谢谢。
我想从当前文件夹的所有文件中搜索宏CODE_INIT_PARAMETERS。 我可以做 M-x发生CODE_INIT_PARAMETERS 但这只显示来自开放缓冲区的条目。用于搜索文件的Emacs命令
有什么方法可以从Emacs当前文件夹中搜索所有文件,而无需切换到M-x shell然后grep?我想避免grep,因为对于某些命令(M-x发生),Emacs会跳转到有问题的代码,我也想这样做。 谢谢。
你可以试试M-x rgrep
。
它会询问:
作为一个额外的,它将排除您的搜索源代码管理私人目录(如CVS,.svn或.git)。
的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文件等)和创建一个递归直接搜索整棵树...
我必须为我的绑定做些事情。它可以工作,但暂时不方便。谢谢。 – grayasm 2009-08-27 19:40:56
这是对Trey Jackson的建议的改进。
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
Yah,这就是为什么我喜欢''igrep',界面更直观。 – 2009-08-26 03:20:16
嗯,我不介意加-R。谢谢。 – grayasm 2009-08-27 19:24:26
有以及ack-grep mode对于使用该ack-grep工具,它是专门针对“设计Emacs的grepping“”编程语言和恕我直言看起来更好比Mx grep的输出要低。
但正如前面提到的,etags应该是正确的方法!
M-X找到 - grep的-dired也适用同样的rgrep
M-x rgrep的作品也很好。谢谢你的回答。 – grayasm 2009-08-27 19:16:50
不能在Windows工作开箱:( – avp 2011-05-06 07:08:46
你需要grep和发现(来自的GnuWin32),以及GNU发现必须在PATH的Windows FIND.EXE之前,grep和发现都安装了EmacsW32。 – Jazz 2011-05-06 14:47:48