Emacs - 多行搜索

Emacs - multiline search

Emacs 中是否有进行多行搜索的模块?

我用过 greppt,现在 ag,它们都很棒。但有时在探索代码库时,您会搜索多行的内容(因此一无所获),但将搜索减少到更少的单词会产生很多结果。

有没有办法在整个项目的 Emacs 中进行多行搜索?

当然有。有多种方法。

你没说你想做什么样的搜索:单个文件?多个缓冲区?正则表达式?您需要固定的搜索结果列表还是增量搜索?


这是一个简单的答案:

  1. 在Dired缓冲区中,标记一些要搜索的文件,然后点击A

  2. 键入要匹配的正则表达式。使用 C-q C-j 输入换行符进行匹配。按 RET 输入正则表达式。

搜索标记的文件,依次在每次搜索命中时停止。使用 M-, 转到下一个点击等

例如,要搜索变量定义的文档字符串,请使用此正则表达式或类似的搜索:

Search marked files (regexp): (defvar.*
.*"Non-nil

第一个 .* 后有一个换行符,您使用 C-q C-j 输入。


在 Emacs 中还有许多其他搜索方式。 开始 的最佳位置是 Emacs Wiki 的 Search and Replace 类别。在那里您可以找到按主要特征细分和描述的搜索方法。

我现在使用 helm-swoop,它非常适合我的工作流程。