2010-05-21 63 views

回答

2

以防万一您还没有阅读它 - 在EmacsWiki GrepMode页面上有很多相关的提示。

+0

看起来像grep模式是最好的事情,我只需要鞭出elisp来得到它我想要的地方;) – math0ne 2010-05-22 13:58:30

7

在Emacs中有三个内置函数用于grep:grep,find-grep(或grep-find)和rgrep。

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

然后,有ack,它的Emacs接口:ack.el,其默认行为类似于rgrep,但可以定制为使用ack提供的选项。

+1

我rgrep的忠实粉丝 - 这是非常容易使用。 – offby1 2010-05-22 03:51:18

0

Dired模式还允许您通过使用dired-do-search函数标记的文件进行搜索。

ibuffer让你通过一堆缓冲区使用难处理的按键序列M-s a C-s来执行emacs的通用isearch。

0

作为替代方案,我发现dired-mode有帮助的,尤其是与任一dired-mark-files-regexp%米)或dired-mark-files-containing-regexp用于选择什么应该被搜索时,然后dired-do-search)。

0

取决于找到一个字符串的含义。正如其他人所说,grep非常擅长它。我每天都在使用它。

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

搜索跨多个文件或缓冲区(或书签)的另一个工具是冰柱搜索。总的想法是,它首先根据一些定义(例如正则表达式)将文件解析为搜索上下文,然后它搜索与当前小型缓冲器输入的匹配(在编辑输入时动态更改搜索命中)。

鉴于grep始终使用线条作为搜索上下文,冰柱搜索您不限于如何定义要搜索的上下文。上下文不需要对文件进行分区(排空);他们可以根据需要覆盖文件中的文字或文字。

在其他可能性中,您可以使用Emacs 事物点定义各种THING作为搜索上下文。例如,您可以使用命令icicles-search-thingsentence作为THING类型,以将句子用作搜索上下文。

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

http://www.emacswiki.org/emacs/Icicles_-_Search_Commands%2c_Overview

相关问题