Odpowiedzi:
Trzymając się wbudowanych poleceń Emacsa, możesz użyć multi-occur
lub multi-occur-in-matching-buffers
( M-x multi-occur- TAB RET
). multi-occur
daje ci dokładną kontrolę poprzez monitowanie o użycie każdego bufora, ale jest to uciążliwe. multi-occur-in-matching-buffers
pozwala wprowadzić wyrażenie regularne w celu dopasowania nazw plików (przeszukuje tylko bufory, które odwiedzają pliki); wprowadź .
jako wyrażenie regularne pliku, aby wyszukać we wszystkich buforach, które odwiedzają plik.
Istnieją również funkcje przyrostowego przeszukiwania listy buforów lub plików, ale są one żmudne, multi-occur
ponieważ wymagają wyświetlania buforów lub plików jeden po drugim.
Aby wyszukać wszystkie pliki w katalogu lub pliki pasujące do określonych wzorców, bez względu na to, czy są otwarte, czy nie, możesz użyć grep
. Istnieją warianty rgrep
i grep-find
rekurencyjne przeszukiwanie podkatalogów.
Oprócz tego, co wspomnieli inni - oto dwa inne zasoby na ten temat.
M-x multi-isearch-buffers
lub M-x multi-isearch-buffers-regexp
(waniliowy Emacs) - Wyszukiwanie przyrostowe w wielu buforach.
Jeśli używasz Sopli , możesz użyć icicle-search
(lub icicle-occur
dowolnej liczby innych icicle-search
specjalizacji) do przeszukiwania wielu plików lub buforów.
(Oprócz wyszukiwania i zastępowania dowolnych buforów , istnieją oczywiście polecenia, które robią to w wielu plikach . Inni wspominali grep
na przykład. I oczywiście jest A
w Dired. Ale nie pytałeś o wyszukiwanie plików.)
Można to zrobić za pomocą steru za pomocą polecenia helm-multi-occur
. Możesz zainstalować ster z Melpy, a następnie wywołać polecenie w następujący sposób:
M-x helm-multi-occur RET M-a RET
Otworzy się, helm-multi-occur
a następnie wybierze wszystkie bufory. Zamiast używać M-a
do oznaczania wszystkich buforów, możesz opcjonalnie wybrać bufory będące przedmiotem zainteresowania pojedynczo. Nawiguj w górę i w dół listy za pomocą C-n
i C-p
i zaznacz bufory za pomocą C-SPC
. Po zaznaczeniu wszystkich buforów naciśnij, RET
aby zaakceptować zaznaczone bufory i rozpocząć wyszukiwanie.
Jeśli dodasz następujące elementy do pliku 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)))))
Następnie można powiązać polecenie, my-helm-multi-occur-buffers
aby wykonać wielokrotne wystąpienie we wszystkich buforach utworzonych przez pliki.
helm-swoop
paczki w MELPA. Zapewnia tę funkcjonalność i umożliwia szybką edycję wyników.
swiper-all
z pakietu swiper zapewnia narzędzie do tego. Jest nawet przyrostowy, więc aktualizuje się podczas pisania.
Możesz użyć ibuffer
trybu, aby zaznaczyć bufory, które chcesz przeszukać. Zadzwoń ibuffer-do-isearch
( M-s a C-s
domyślnie ograniczone), aby wyszukać tekst lub ibuffer-do-isearch-regexp
jeśli chcesz wyszukać wyrażenie regularne.
Jeśli nie jesteś zaznajomiony ibuffer
, odpal go i spójrz na menu Mark, aby zobaczyć wszystkie sposoby wyboru zestawu buforów, na których chcesz działać.
Oto inny sposób ze sterem: M-x helm-mini M-a C-s blah
. Po wywołaniu helm-mini
, M-a
oznaczy wszystkie bufory otwarcia wtedy C-s blah
zrobi wielo wystąpić na oznakowanych buforów.
Dostępne jest również rozwiązanie wykorzystujące tryb steru helm-swoop
.
Posługiwać się
M-x helm-swoop RET
następnie, aby wyszukać we wszystkich otwartych buforach, wpisz
M-i
następnie po prostu wpisz, blah
aby wyszukać we wszystkich buforach. W innym oknie pokażą się wszystkie wystąpienia.
Możesz też po prostu wpisać
M-x helm-multi-swoop
następnie zaznacz wszystkie bufory, które chcesz przeszukać, M-SPC
lub C-SPC
naciśnij RET
i wyszukaj blah
.
.
jest to wyrażenie regularne pasujące do wszystkich plików.