[英]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
(它提供命令igrep
和igrep-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类似
对于使用ack-grep工具的emacs也有ack-grep模式 ,该工具专为''grepping''编程语言而设计,而IMHO看起来比Mx grep的输出更好。
但如前所述,etags应该是正确的方法!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.