用于在文件中搜索的Emacs命令
我想在当前文件夹的所有文件中搜索宏代码初始化参数。 我能行 M-x发生代码\初始\参数 但这只显示来自打开缓冲区的条目 有没有办法从当前文件夹、Emacs中搜索所有文件,而不切换到M-XShell和grep?我希望避免使用grep,因为对于某些命令(M-x出现),Emacs会跳转到有问题的代码,我也希望这样。用于在文件中搜索的Emacs命令,emacs,Emacs,我想在当前文件夹的所有文件中搜索宏代码初始化参数。 我能行 M-x发生代码\初始\参数 但这只显示来自打开缓冲区的条目 有没有办法从当前文件夹、Emacs中搜索所有文件,而不切换到M-XShell和grep?我希望避免使用grep,因为对于某些命令(M-x出现),Emacs会跳转到有问题的代码,我也希望这样。 谢谢。Emacs提供了一个内置命令: M-x grep RET CODE_INIT_PARAMETERS *.c (和'grep-find搜索子目录) 虽然我更喜欢外部软件包提供的界面(
谢谢。Emacs提供了一个内置命令:
M-x grep RET CODE_INIT_PARAMETERS *.c
(和'grep-find
搜索子目录)
虽然我更喜欢外部软件包提供的界面(它提供命令
igrep
和igrep find
)。如果在dired中打开一个文件夹,并标记所有文件(使用“m”),则可以在我的绑定中运行“dired do search”(“a”)。这将搜索所有标记的文件。要转到下一个,请运行标记循环continue(M-,)
我已经设置了几个elisp函数来标记文件的不同子集(.h文件、.cpp文件等),并创建一个递归目录来搜索整个树…您可以尝试
M-x rgrep
它将要求:
- 要在其中递归搜索的目录
- 要包含在搜索中的文件的文件模式
- 要搜索的模式
您可以考虑使用和调用<代码>查找标记< /> >(绑定到<代码> m- .<代码>默认)或“代码>标签搜索< /代码>(没有默认绑定,但可以继续使用<代码> m-,)。
< P>这是对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
对于使用专门为“grepping”编程语言设计的工具的emacs来说,还有一种方法,IMHO看起来比M-x grep的输出更好
但正如前面提到的,ETAG应该是正确的方式 M-x find grep dired的工作原理与rgrep类似M-x grep find还允许您以与发生相同的方式迭代结果。您不需要这样做吗?M-x grep“CODE_INIT_PARAMETERS”*.c值得一提的是,使用前缀参数将自动设置搜索,以查找光标所在的位置以及所处的文件类型。C-U M-xgrep@justinhj,是的。我没有使用
M-x grep
这一点可以看出来。谢谢,我对emacs很陌生,不知道M-x grep和igrep。他们把我的工作做得很好。谢谢。耶,这就是为什么我喜欢'igrep
,界面更直观。我必须为我的绑定做些事情。它可以工作,但目前还不方便。谢谢。您需要grep和find(来自GnuWin32),GNU find必须在路径中的Windows find.exe之前。grep和find是与EmacsW32一起安装的。我还想补充一点,rgrep
坏了一些。也就是说,当我为一个文件输入一个模式时,它什么也找不到。经过一番挣扎,我找到了原因:它不知道这些点意味着什么。也就是说,我想在.h、.c、.cpp文件中搜索一个模式,而不是我的模式*.[ch].
我应该输入*.[ch]*.
。