Jawaban:
Menempel perintah Emacs bawaan, Anda dapat menggunakan multi-occur
atau multi-occur-in-matching-buffers
( M-x multi-occur- TAB RET
). multi-occur
memberi Anda kontrol yang baik dengan meminta setiap buffer untuk digunakan, tetapi itu membosankan. multi-occur-in-matching-buffers
memungkinkan Anda memasukkan regexp untuk mencocokkan nama file (hanya mencari dalam buffer yang mengunjungi file); masukkan .
sebagai regexp file untuk mencari di semua buffer yang mengunjungi file.
Ada juga fungsi untuk pencarian tambahan di seluruh daftar buffer atau file, tetapi mereka membosankan seperti multi-occur
karena mereka membutuhkan daftar buffer atau file satu per satu.
Untuk mencari di semua file dalam direktori, atau file yang cocok dengan pola tertentu, apakah itu terbuka atau tidak, Anda dapat menggunakan grep
. Ada varian rgrep
dan grep-find
untuk mencari subdirektori secara rekursif.
Selain apa yang orang lain sebutkan - di sini ada dua sumber daya lain untuk ini.
M-x multi-isearch-buffers
atau M-x multi-isearch-buffers-regexp
(vanilla Emacs) - Pencarian bertahap di beberapa buffer.
Jika Anda menggunakan Icicles maka Anda dapat menggunakan icicle-search
(atau icicle-occur
, atau sejumlah icicle-search
spesialisasi lainnya ) untuk mencari di beberapa file atau buffer.
(Selain mencari dan mengganti buffer sewenang-wenang , tentu saja ada perintah yang melakukan itu di beberapa file . Yang lain telah disebutkan grep
, misalnya. Dan tentu saja ada A
di Dired. Tapi Anda tidak bertanya tentang mencari file.)
Ini dapat dilakukan dengan helm melalui perintah helm-multi-occur
. Anda dapat menginstal helm dari melpa dan kemudian memanggil perintah sebagai berikut:
M-x helm-multi-occur RET M-a RET
Ini akan terbuka helm-multi-occur
dan kemudian pilih semua buffer. Alih-alih menggunakan M-a
untuk menandai semua buffer, Anda dapat memilih buffer yang diminati satu per satu. Navigasi naik dan turun daftar dengan C-n
dan C-p
dan tandai buffer dengan C-SPC
. Setelah semua buffer ditandai, tekan RET
untuk menerima buffer yang ditandai dan mulai mencari.
Jika Anda menambahkan berikut ini ke file init Anda:
(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)))))
Anda kemudian dapat mengikat perintah my-helm-multi-occur-buffers
untuk melakukan multi- kejadian di semua buffer yang didukung oleh file.
helm-swoop
paket dalam MELPA. Ini menyediakan fungsi ini dan memungkinkan pengeditan cepat hasil juga.
swiper-all
dari paket swiper menyediakan alat untuk melakukan ini. Itu bahkan tambahan, sehingga diperbarui saat Anda mengetik.
Anda dapat menggunakan ibuffer
mode untuk menandai buffer yang ingin Anda cari. Panggil ibuffer-do-isearch
(terikat M-s a C-s
secara default) untuk mencari teks, atau ibuffer-do-isearch-regexp
jika Anda perlu mencari ekspresi reguler.
Jika Anda tidak terbiasa ibuffer
, jalankan dan lihat menu Mark untuk melihat semua cara Anda dapat memilih satu set buffer yang akan digunakan.
Berikut adalah cara lain dengan helm: M-x helm-mini M-a C-s blah
. Setelah memohon helm-mini
, M-a
akan menandai semua buffer pembukaan kemudian C-s blah
akan melakukan multi terjadi pada buffer ditandai.
Juga, solusi menggunakan mode helm adalah dengan helm-swoop
.
Menggunakan
M-x helm-swoop RET
kemudian, untuk mencari di semua buffer terbuka, ketik
M-i
lalu, cukup ketik blah
untuk mencarinya di semua buffer. Pada jendela yang berbeda akan ditampilkan semua kejadian.
Atau, Anda bisa mengetik
M-x helm-multi-swoop
kemudian, tandai semua buffer yang ingin Anda cari dengan M-SPC
atau C-SPC
, tekan RET
dan cari blah
.
.
adalah ekspresi reguler untuk mencocokkan semua file.