Emacs命令用于search文件
我想从当前文件夹的所有文件中searchmacrosCODE_INIT_PARAMETERS。 我可以做Mx发生CODE_INIT_PARAMETERS,但是这只显示来自打开缓冲区的条目。
有没有办法从Emacs目前的文件夹中search所有文件,而无需切换到Mx shell然后grep? 我想避免grep,因为对于一些命令(Mx发生),Emacs会跳转到违规代码,我也想这样做。 谢谢。
你可以试试Mx rgrep
。
它会要求:
- 您要recursionsearch的目录
- search中要包含的文件的文件模式
- 你想要search的模式
作为一个额外的,它会从您的search排除源控制私人目录(如CVS,.svn或.git)。
Emacs提供了一个内置的命令:
Mx grep RET CODE_INIT_PARAMETERS *.c
(和'grep-find
查找子目录)
尽pipe我更喜欢由外部软件包igrep
提供的接口(它提供命令igrep
和igrep-find
)。
如果你在dired中打开一个文件夹,并标记所有文件(用'm'),你可以运行'dired-do-search('A'在我的绑定中)。 这将search所有标记的文件。 要进入下一个,运行tags-loop-continue(M-,)
我已经设置了几个elisp函数来标记文件的各种子集(.h文件,.cpp文件等),并创build一个recursiondiredsearch整个树…
这是Trey Jackson的build议的一个改进。
Mx grep
你会看到grep命令,例如grep -nH -e
将R添加到第一组标志(用于recursion),并在-e之后放置search词
grep -nHR -e CODE_INIT_PARAMETERS
点击RET。 Emacs的结果是可以理解的 – 你可以点击或者导航到他们,就像Mx发生的一样。 您可能需要将search目录放在命令的末尾:
grep -nHR -e CODE_INIT_PARAMETERS /path/to/root/of/search
在哪里
- 你可能会反复search; 和
- etags 将工作
您可以考虑使用etags
并调用find-tag
(默认绑定到M-.
)或者tags-search
(没有默认绑定,但可以用M-,
继续)。
emacs还有ack-grep模式 ,它使用专为“grepping”编程语言devise的ack-grep工具,而且IMHO看起来比Mx grep的输出更好。
但正如前面提到的,etags应该是正确的方式!
Mx find-grep-dired也与rgrep类似