Odpowiedzi:
Trzymając się wbudowanych poleceń Emacsa, możesz użyć multi-occurlub multi-occur-in-matching-buffers( M-x multi-occur- TAB RET). multi-occurdaje ci dokładną kontrolę poprzez monitowanie o użycie każdego bufora, ale jest to uciążliwe. multi-occur-in-matching-bufferspozwala 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-occurponieważ 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 rgrepi grep-findrekurencyjne przeszukiwanie podkatalogów.
Oprócz tego, co wspomnieli inni - oto dwa inne zasoby na ten temat.
M-x multi-isearch-bufferslub 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-occurdowolnej liczby innych icicle-searchspecjalizacji) 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 grepna przykład. I oczywiście jest Aw 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-occura następnie wybierze wszystkie bufory. Zamiast używać M-ado 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-ni C-pi zaznacz bufory za pomocą C-SPC. Po zaznaczeniu wszystkich buforów naciśnij, RETaby 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-buffersaby wykonać wielokrotne wystąpienie we wszystkich buforach utworzonych przez pliki.
helm-swooppaczki w MELPA. Zapewnia tę funkcjonalność i umożliwia szybką edycję wyników.
swiper-allz pakietu swiper zapewnia narzędzie do tego. Jest nawet przyrostowy, więc aktualizuje się podczas pisania.
Możesz użyć ibuffertrybu, aby zaznaczyć bufory, które chcesz przeszukać. Zadzwoń ibuffer-do-isearch( M-s a C-sdomyślnie ograniczone), aby wyszukać tekst lub ibuffer-do-isearch-regexpjeś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-aoznaczy wszystkie bufory otwarcia wtedy C-s blahzrobi 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, blahaby 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-SPClub C-SPCnaciśnij RETi wyszukaj blah.
.jest to wyrażenie regularne pasujące do wszystkich plików.