4

先日、Mxが発生したことを知りました。
( Emacs でコードの折りたたみ効果を実現する方法は? )

できればdired モードで マークされた複数のファイル (またはバッファー) 内のすべての一致する行を一覧表示できるかどうか疑問に思います。

4

6 に答える 6

3
M-x multi-occur

M-x multi-occur-in-matching-buffers

また:

M-x multi-occur-in-this-mode

(defun get-buffers-matching-mode (mode)
  "Returns a list of buffers where their major-mode is equal to MODE"
  (let ((buffer-mode-matches '()))
   (dolist (buf (buffer-list))
     (with-current-buffer buf
       (if (eq mode major-mode)
           (add-to-list 'buffer-mode-matches buf))))
   buffer-mode-matches))

    (defun multi-occur-in-this-mode ()
      "Show all lines matching REGEXP in buffers with this major mode."
      (interactive)
      (multi-occur
       (get-buffers-matching-mode major-mode)
       (car (occur-read-primary-args))))
于 2013-05-21T04:42:17.157 に答える
2

ファイル

これは、 MELPAからインストールできるパッケージnoccurを使用して実行できます。

次の 2 つの機能を提供します。

  • noccur-direddired マークの付いたファイルに対して実行multi-occurされます
  • noccur-project現在のプロジェクトのすべてのファイルに対して実行multi-occurされます。これは再帰的です。

ドキュメントからの典型的な使用法は次M-x noccur-project RET foo RET
のとおりです: オカレンス バッファーの内容は、occur-edit-mode (e にバインド) で編集できます。変更されたすべてのバッファの変更を保存して発生モードに戻るには、 を押しC-c C-cます。

バッファ

これは、組み込みのibufferを使用して実行できます。キーでバッファをマークしてからm、キーでマークされたバッファOを起動ibuffer-do-occurします。私は個人的に ibuffer を使用してアクティブにします。(defalias 'list-buffers 'ibuffer).emacs

regexp に一致するバッファに対してmulti-occur-in-matching-buffers実行するビルトインを使用することもできます。典型的な使用法は、Emacs で既に開かれているバッファーの is regexp と、一致するものです。multi-occurM-x multi-occur-in-matching-buffers RET ext$ RET regexp REText$regexp

于 2015-05-11T15:13:00.947 に答える
1

あなたは試すことができます

(defun dired-do-multi-occur (regexp)
  "Run `multi-occur' with REGEXP on all marked files."
  (interactive (list (read-regexp "Regexp: ")))
  (multi-occur (mapcar 'find-file-noselect (dired-get-marked-files)) regexp))

dired バッファで実行するM-x dired-do-multi-occurか、好みのキーにバインドします。

警告:マークされたファイルはすべて emacs によって開かれます。

于 2013-05-21T04:44:14.797 に答える
1

書き込み:

(a) Dired でマークされたファイルを正規表現検索するように求めているのか、(b) 内容が正規表現に一致するファイルを (Dired で) マークするように求めているのかわかりません。- または (c) 他の何か。

  • A(またはM-S a C-M-sインクリメンタル正規表現検索の場合)を使用して、前者(マークされたファイルの検索)を実行できます。そして、この回答では、ここでマークされたすべてのファイルとマークされたサブディレクトリで (再帰的に) 検索できます。

  • %q( ) を使用して、後者 (内容が一致するファイルをマークする) を実行できますdired-mark-files-containing-regexp

于 2014-09-27T22:02:43.547 に答える