什么';EMACS在文件模式下的最佳查找是什么?

什么';EMACS在文件模式下的最佳查找是什么?,emacs,Emacs,在EMACS中查找多个文件中的字符串的最佳包是什么。我知道grep之类的东西,但我希望操作起来更流畅一些。Emacs中有三个内置的grep函数:grep、find grep(或grep find)和rgrep 前两种方法是让用户直接编辑grep命令行。 我通常使用“递归grep”中的第三个rgrep。它更友好一些,因为它一个接一个地提示用户输入搜索参数(搜索字符串、文件类型和目录),提供可自定义的默认值,并且它自动忽略一些通常不想搜索的常见文件和目录,例如.svn或.o文件 然后,还有Emacs

在EMACS中查找多个文件中的字符串的最佳包是什么。我知道grep之类的东西,但我希望操作起来更流畅一些。

Emacs中有三个内置的grep函数:grep、find grep(或grep find)和rgrep

前两种方法是让用户直接编辑grep命令行。 我通常使用“递归grep”中的第三个rgrep。它更友好一些,因为它一个接一个地提示用户输入搜索参数(搜索字符串、文件类型和目录),提供可自定义的默认值,并且它自动忽略一些通常不想搜索的常见文件和目录,例如.svn或.o文件


然后,还有Emacs:,它的默认行为类似于rgrep,但可以自定义以使用ack提供的选项。

以防万一您还没有读过它-EmacsWiki页面上有很多相关提示

Dired模式还允许您使用
Dired do search
功能搜索标记文件


而且
ibuffer
允许您使用笨拙的键序列
M-s a C-s

通过一组缓冲区执行emacs的通用isearch。作为替代方法,我发现
dired模式
很有用,尤其是与
dired mark files regexp
一起使用时(%M)或
dired标记包含regexp的文件
,以选择应搜索的内容,然后
dired do search
A

取决于查找字符串的含义。正如其他人所提到的,
grep
非常擅长它所做的事情。我每天都在用它

但是,如果你的“字符串”是一个句子中的一系列单词(可以是多行),那么
grep
可能不是你想要的

另一个跨多个文件或缓冲区(或书签)搜索的工具是ICICICLES搜索。一般的想法是,它首先根据某种定义(例如regexp)将文件解析为搜索上下文,然后搜索与当前微缓冲区输入匹配的内容(在编辑输入时动态更改搜索命中率)

grep
总是使用行作为搜索上下文,而冰柱搜索并不局限于如何定义要搜索的上下文。上下文不需要对文件进行分区(耗尽);它们可以覆盖任意多或少的文件文本

在其他可能性中,您可以使用Emacs thing at point定义作为各种类型的搜索上下文。例如,您可以使用命令
冰柱搜索事物
,将
句子
作为事物类型,使用句子作为搜索上下文

或者您可以使用字符属性区域作为搜索上下文:例如,搜索使用给定的一组面锁定字体的所有区域。有很多可能性


我是rgrep的忠实粉丝——它的使用令人惊讶地简单。似乎grep模式是最好的选择,我想我只是需要快速推出elisp,让它达到我想要的效果;)