Làm cách nào để tìm văn bản trên nhiều bộ đệm mở?


36

Hãy nói rằng tôi có 10 bộ đệm mở và tôi muốn tìm tất cả các lần xuất hiện blahtrong tất cả 10 bộ đệm. Làm thế nào tôi có thể làm điều này?

Câu trả lời:


31

Bám sát các lệnh Emacs tích hợp, bạn có thể sử dụng multi-occurhoặc multi-occur-in-matching-buffers( M-x multi-occur- TAB RET). multi-occurcung 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-bufferscho 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-occurchú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ể rgrepgrep-findđể tìm kiếm các thư mục con theo cách đệ quy.


5
+1 để đề cập đó .là biểu thức chính quy để khớp với tất cả các tệp.
dùng2699

12

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.

  1. M-x multi-isearch-buffershoặc M-x multi-isearch-buffers-regexp(vanilla Emacs) - Tìm kiếm tăng dần trên nhiều bộ đệm.

  2. 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-searchchuyê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 . grepVí dụ, những người khác đã đề cập . Và dĩ nhiên, Atrong Dired.


10

Đ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-occurvà 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-nC-pvà 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.


3
Bạn cũng có thể muốn xem xét helm-swoopgó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ả.
Vamsi

9

swiper-alltừ 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.

nhập mô tả hình ảnh ở đây


điều đó thật tuyệt ! tìm thấy tốt đẹp
abourget

6

Bạn có thể sử dụng ibufferchế độ để đá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-stheo mặc định) để tìm kiếm văn bản hoặc ibuffer-do-isearch-regexpnế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.


1

Đâ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-asẽ đánh dấu tất cả các bộ đệm mở sau đó C-s blahsẽ thực hiện nhiều lần trên các bộ đệm được đánh dấu.


0

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-SPChoặc C-SPC, nhấn RETvà tìm kiếm blah.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.