Câu trả lời:
Bám sát các lệnh Emacs tích hợp, bạn có thể sử dụng multi-occur
hoặc multi-occur-in-matching-buffers
( M-x multi-occur- TAB RET
). multi-occur
cung cấp cho bạn quyền kiểm soát tốt bằng cách nhắc nhở từng bộ đệm sử dụng, nhưng thật tẻ nhạt. multi-occur-in-matching-buffers
cho phép bạn nhập biểu thức chính quy để khớp tên tệp (nó chỉ tìm kiếm trong bộ đệm đang truy cập tệp); nhập .
dưới dạng tệp regrec để tìm kiếm trong tất cả các bộ đệm đang truy cập tệp.
Ngoài ra còn có các chức năng để tìm kiếm gia tăng trên một danh sách các bộ đệm hoặc tệp, nhưng chúng tẻ nhạt như multi-occur
chúng yêu cầu liệt kê từng bộ đệm hoặc từng tệp một.
Để tìm kiếm trong tất cả các tệp trong một thư mục hoặc các tệp khớp với các mẫu nhất định, cho dù chúng có mở hay không, bạn có thể sử dụng grep
. Có các biến thể rgrep
và grep-find
để tìm kiếm các thư mục con theo cách đệ quy.
Ngoài những gì người khác đã đề cập - đây là hai tài nguyên khác cho việc này.
M-x multi-isearch-buffers
hoặc M-x multi-isearch-buffers-regexp
(vanilla Emacs) - Tìm kiếm tăng dần trên nhiều bộ đệm.
Nếu bạn sử dụng Icicles thì bạn có thể sử dụng icicle-search
(hoặc icicle-occur
, hoặc bất kỳ số lượng icicle-search
chuyên môn nào khác ) để tìm kiếm trên nhiều tệp hoặc bộ đệm.
(Ngoài việc tìm kiếm và thay thế trên các bộ đệm tùy ý , tất nhiên có các lệnh thực hiện điều đó trên nhiều tệp . grep
Ví dụ, những người khác đã đề cập . Và dĩ nhiên, A
trong Dired.
Điều này có thể được thực hiện với helm thông qua lệnh helm-multi-occur
. Bạn có thể cài đặt helm từ melpa và sau đó gọi lệnh như sau:
M-x helm-multi-occur RET M-a RET
Điều này sẽ mở helm-multi-occur
và sau đó chọn tất cả các bộ đệm. Thay vì sử dụng M-a
để đánh dấu tất cả các bộ đệm, bạn có thể tùy chọn chọn các bộ đệm quan tâm một lần. Di chuyển lên và xuống trong danh sách với C-n
và C-p
và bộ đệm đánh dấu với C-SPC
. Khi tất cả các bộ đệm được đánh dấu, nhấn RET
để chấp nhận bộ đệm được đánh dấu và bắt đầu tìm kiếm.
Nếu bạn thêm phần sau vào tệp init của mình:
(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)))))
Sau đó, bạn có thể liên kết lệnh my-helm-multi-occur-buffers
để thực hiện đa xảy ra trong tất cả các bộ đệm được hỗ trợ bởi các tệp.
helm-swoop
gói trong MELPA. Nó cung cấp chức năng này và cho phép chỉnh sửa nhanh kết quả.
swiper-all
từ gói swiper cung cấp một công cụ để làm điều này. Nó thậm chí còn tăng lên, vì vậy nó cập nhật khi bạn nhập.
Bạn có thể sử dụng ibuffer
chế độ để đánh dấu bộ đệm bạn muốn tìm kiếm. Gọi ibuffer-do-isearch
(bị ràng buộc M-s a C-s
theo mặc định) để tìm kiếm văn bản hoặc ibuffer-do-isearch-regexp
nếu bạn cần tìm kiếm một biểu thức thông thường.
Nếu bạn không quen thuộc ibuffer
, hãy khởi động nó và xem menu Mark để xem tất cả các cách bạn có thể chọn một bộ đệm để vận hành.
Đây là một cách khác với helm : M-x helm-mini M-a C-s blah
. Sau khi gọi helm-mini
, M-a
sẽ đánh dấu tất cả các bộ đệm mở sau đó C-s blah
sẽ thực hiện nhiều lần trên các bộ đệm được đánh dấu.
Ngoài ra, một giải pháp sử dụng chế độ helm là với helm-swoop
.
Sử dụng
M-x helm-swoop RET
sau đó, để tìm kiếm trong tất cả các bộ đệm mở, gõ
M-i
sau đó, chỉ cần gõ blah
để tìm kiếm nó trong tất cả các bộ đệm. Trên một cửa sổ khác nhau sẽ hiển thị tất cả các lần xuất hiện.
Ngoài ra, bạn chỉ có thể gõ
M-x helm-multi-swoop
sau đó, đánh dấu tất cả các bộ đệm bạn muốn tìm kiếm bằng M-SPC
hoặc C-SPC
, nhấn RET
và tìm kiếm blah
.
.
là biểu thức chính quy để khớp với tất cả các tệp.