多くのオープンバッファ全体でテキストを見つけるにはどうすればよいですか?


36

10個のバッファを開いており、blah10個すべてのバッファ内のすべてのオカレンスを検索するとします。どうすればいいですか?

回答:


31

組み込みのEmacsコマンドにこだわり、multi-occuror multi-occur-in-matching-buffersM-x multi-occur- TAB RET)を使用できます。multi-occur使用するバッファごとにプロンプ​​トを表示することで、きめ細かく制御できますが、面倒です。multi-occur-in-matching-buffersファイル名と一致する正規表現を入力できます(ファイルを訪問しているバッファーでのみ検索します)。.ファイルを訪問しているすべてのバッファで検索するには、ファイル正規表現として入力します。

バッファまたはファイルのリスト全体をインクリメンタル検索する機能もありますがmulti-occur、バッファまたはファイルを1つずつリストする必要があるため退屈です。

ディレクトリ内のすべてのファイル、または特定のパターンに一致するファイルを、開いているかどうかに関係なく検索するには、を使用できますgrep。亜種がrgrepありgrep-find、サブディレクトリを再帰的に検索します。


5
言及するための+1 .は、すべてのファイルに一致する正規表現です。
user2699

12

他の人が言及したことに加えて、ここに他の2つのリソースがあります。

  1. M-x multi-isearch-buffersまたはM-x multi-isearch-buffers-regexp(バニラEmacs)-複数のバッファーにわたるインクリメンタル検索。

  2. あなたが使用している場合はつららを、あなたは使用することができますicicle-search(またはicicle-occur、または他の任意の数のicicle-search複数のファイルまたはバッファ間で検索する専門)。

(任意のバッファでの検索と置換に加えて、複数のファイルでそれを行うコマンドがありますgrepたとえば、他の人が言及しています。もちろんA、Diredにもあります。しかし、ファイルの検索については尋ねませんでした。)


10

これは、コマンドを介してヘルムで実行できますhelm-multi-occurヘルパをmelpaからインストールして、次のようにコマンドを呼び出すことができます。

M-x helm-multi-occur RET M-a RET

これによりhelm-multi-occur、すべてのバッファが開き、選択されます。M-aすべてのバッファをマークするために使用する代わりに、必要に応じて一度に1つのバッファを選択できます。リストを上下に移動C-nし、C-pマーク・バッファを持ちますC-SPC。すべてのバッファがマークされたら、を押しRETてマークされたバッファを受け入れ、検索を開始します。

以下をinitファイルに追加する場合:

(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をバインドして、ファイルによってバッキングされているすべてのバッファーで複数回発生することができます。


3
あなたはまた、見たいかもしれませんhelm-swoopMELPAパッケージ。この機能を提供し、結果の迅速な編集も可能にします。
Vamsi 14年


6

ibufferモードを使用して、検索するバッファをマークできます。ibuffer-do-isearchM-s a C-sデフォルトでバインドされている)を呼び出してテキストibuffer-do-isearch-regexpを検索するか、正規表現を検索する必要がある場合。

に慣れていない場合はibuffer、起動してMarkメニューを見て、操作するバッファーのセットを選択できるすべての方法を確認してください。


1

ヘルムの別の方法を次に示しますM-x helm-mini M-a C-s blah。を呼び出した後helm-miniM-aすべての開始バッファーをマークし、マークC-s blahされたバッファーで複数回発生します。


0

また、ヘルムモードを使用するソリューションはhelm-swoopです。

つかいます

M-x helm-swoop RET

次に、開いているすべてのバッファを検索するには、次を入力します。

M-i

次に、blahすべてのバッファーで検索するために入力します。別のウィンドウにすべての出現が表示されます。

または、単に入力することもできます

M-x helm-multi-swoop

次に、検索するすべてのバッファをM-SPCまたはでマークしC-SPC、を押しRETて検索しblahます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.