无法在Emacs中有效搜索

时间:2009-05-25 22:39:56

标签: search emacs

我想在Emacs中使用类似的工具,如Vim中的以下内容

 :g/search/

获取匹配列表。

如何在Emacs中获得匹配列表?

3 个答案:

答案 0 :(得分:16)

M-x occur

来自the manual

  

M-x occur

     

提示正则表达式,并显示一个列表,显示缓冲区中包含匹配项的每一行。匹配的文本使用match面突出显示。要将搜索限制为部分缓冲区,请缩小到该部分(请参阅缩小)。数字参数n指定在每个匹配行之前和之后显示n个上下文行。上下文行的默认数量由变量list-matching-lines-default-context-lines指定。

     

*Occur*缓冲区中,您可以单击每个条目,或在此处移动点并键入RET,以访问已搜索的缓冲区中的相应位置。 oC-o在另一个窗口中显示匹配项; C-o不会选择它。或者,您可以使用C-x `next-error)命令逐个访问事件(请参阅编译模式)。

     

e缓冲区中键入*Occur*切换到Occur Edit模式,其中对条目所做的编辑也应用于原始缓冲区中的文本。输入C-c C-c返回Occur模式。

     

命令M-x list-matching-linesM-x occur的同义词。

答案 1 :(得分:5)

M-x occurr外,还要检查M-x grep。这可以同时在多个文件中使用。

答案 2 :(得分:4)

我通常的工作流程不是获取列表并选择(不知道如何操作),而是使用增量搜索:

C-s <search target>

获得该点之后的第一场比赛。如果您不喜欢,另一个C-s会获得下一个C-s。继续,直到你感到高兴(你需要一个额外的isearch-forward从缓冲区和缓冲区包围)。足够新的emacsen还可以突出显示所有可见的匹配。

如TörökGábor的评论所述,这是{{1}}的典型键绑定。如果绑定不同,则需要修改规定的程序。