Answers:
坚持使用内置的Emacs命令,您可以使用multi-occur
或multi-occur-in-matching-buffers
(M-x multi-occur- TAB RET
)。multi-occur
通过提示每个缓冲区要使用来给您很好的控制,但这很繁琐。multi-occur-in-matching-buffers
使您可以输入正则表达式来匹配文件名(它仅在访问文件的缓冲区中搜索);输入.
作为文件regexp来搜索正在访问文件的所有缓冲区。
还有一些用于在缓冲区或文件列表中进行增量搜索的功能,但是它们很繁琐,就像multi-occur
它们需要一一列出缓冲区或文件一样。
要搜索目录中的所有文件或匹配某些模式的文件(无论它们是否打开),可以使用grep
。有变体rgrep
和grep-find
递归搜索子目录。
除了其他人提到的内容以外,这里还有其他两个资源。
M-x multi-isearch-buffers
或M-x multi-isearch-buffers-regexp
(香草Emacs)-跨多个缓冲区进行增量搜索。
如果您使用Icicles,则可以使用icicle-search
(或icicle-occur
,或任何其他icicle-search
专业名称)在多个文件或缓冲区中搜索。
(除了在任意缓冲区中搜索和替换外,当然还有命令可以在多个文件中执行。grep
例如,其他人也提到过。当然A
Dired中也有。但是您并没有询问搜索文件。)
这可以通过命令helm来完成helm-multi-occur
。您可以从melpa安装头盔,然后按如下所示调用命令:
M-x helm-multi-occur RET M-a RET
这将打开helm-multi-occur
,然后选择所有缓冲区。M-a
您可以选择一次选择一个感兴趣的缓冲区,而不用标记所有缓冲区。导航向上和向下的清单,C-n
并C-p
与标记的缓冲区C-SPC
。标记所有缓冲区后,按RET
接受标记的缓冲区并开始搜索。
如果将以下内容添加到您的初始化文件中:
(require 'helm-regexp)
(eval-after-load "helm-regexp"
'(setq helm-source-moccur
(helm-make-source "Moccur" 'helm-source-multi-occur :follow 1)))
;; (source: http://stackoverflow.com/q/14726601)
(defun my-helm-multi-occur-buffers ()
"multi-occur in all buffers backed by files."
(interactive)
(helm-multi-occur
(delq nil
(mapcar (lambda (b)
(when (buffer-file-name b) (buffer-name b)))
(buffer-list)))))
然后,您可以绑定命令my-helm-multi-occur-buffers
以在文件支持的所有缓冲区中进行多次操作。
helm-swoop
MELPA 中的软件包。它提供了此功能,并允许快速编辑结果。
另外,使用舵模式的解决方案是helm-swoop
。
使用
M-x helm-swoop RET
然后,要搜索所有打开的缓冲区,请键入
M-i
然后,只需键入blah
即可在所有缓冲区中进行搜索。在不同的窗口上将显示所有事件。
另外,您也可以输入
M-x helm-multi-swoop
然后,用M-SPC
或标记要搜索的所有缓冲区C-SPC
,按RET
并搜索blah
。
.
是匹配所有文件的正则表达式。