Risposte:
Attenendosi ai comandi Emacs incorporati, è possibile utilizzare multi-occur
o multi-occur-in-matching-buffers
( M-x multi-occur- TAB RET
). multi-occur
offre un controllo accurato richiedendo l'utilizzo di ciascun buffer, ma è noioso. multi-occur-in-matching-buffers
ti permette di inserire una regexp per abbinare i nomi dei file (cerca solo nei buffer che visitano i file); inserisci .
come regexp del file per cercare in tutti i buffer che stanno visitando un file.
Esistono anche funzioni per la ricerca incrementale in un elenco di buffer o file, ma sono noiosi come multi-occur
richiedono l'elenco dei buffer o dei file uno per uno.
Per cercare in tutti i file in una directory, o file corrispondenti a determinati schemi, siano essi aperti o meno, è possibile utilizzare grep
. Esistono varianti rgrep
e grep-find
cercare ricorsivamente le sottodirectory.
Oltre a ciò che altri hanno menzionato, ecco altre due risorse per questo.
M-x multi-isearch-buffers
o M-x multi-isearch-buffers-regexp
(Emacs vaniglia) - Ricerca incrementale su più buffer.
Se usi Icicles puoi usare icicle-search
(o icicle-occur
, o un numero qualsiasi di altre icicle-search
specializzazioni) per cercare tra più file o buffer.
(Oltre a cercare e sostituire buffer arbitrari , ci sono ovviamente comandi che lo fanno su più file . Altri grep
, ad esempio, ne hanno parlato . E ovviamente c'è A
Dired. Ma non hai chiesto informazioni sulla ricerca di file.)
Questo può essere fatto con timone tramite il comando helm-multi-occur
. Puoi installare helm da melpa e quindi chiamare il comando come segue:
M-x helm-multi-occur RET M-a RET
Questo si aprirà helm-multi-occur
e quindi selezionerà tutti i buffer. Invece di utilizzare M-a
per contrassegnare tutti i buffer, è possibile selezionare i buffer di interesse uno alla volta. Navigare su e giù nell'elenco con C-n
e C-p
e contrassegnare i buffer con C-SPC
. Una volta contrassegnati tutti i buffer, premere RET
per accettare i buffer contrassegnati e iniziare la ricerca.
Se si aggiunge quanto segue al file 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)))))
È quindi possibile associare il comando my-helm-multi-occur-buffers
per eseguire un multiplo in tutti i buffer supportati da file.
helm-swoop
pacchetto in MELPA. Fornisce questa funzionalità e consente anche una rapida modifica dei risultati.
swiper-all
dal pacchetto swiper fornisce uno strumento per farlo. È anche incrementale, quindi si aggiorna durante la digitazione.
È possibile utilizzare la ibuffer
modalità per contrassegnare i buffer che si desidera cercare. Chiama ibuffer-do-isearch
(associato per M-s a C-s
impostazione predefinita) per cercare un testo o ibuffer-do-isearch-regexp
se devi cercare un'espressione regolare.
Se non hai familiarità ibuffer
, accendilo e dai un'occhiata al menu Mark per vedere tutti i modi in cui puoi scegliere un set di buffer su cui operare.
Ecco un altro modo con il timone: M-x helm-mini M-a C-s blah
. Dopo aver richiamato helm-mini
, M-a
contrassegnerà tutti i buffer di apertura, quindi C-s blah
si verificheranno più buffer sui marcatori .
Inoltre, è disponibile una soluzione che utilizza la modalità timone helm-swoop
.
Uso
M-x helm-swoop RET
quindi, per cercare in tutti i buffer aperti, digitare
M-i
quindi, basta digitare blah
per cercarlo in tutti i buffer. In una finestra diversa mostrerà tutte le occorrenze.
In alternativa, puoi semplicemente digitare
M-x helm-multi-swoop
quindi, contrassegnare tutti i buffer con cui si desidera cercare M-SPC
o C-SPC
, premere RET
e cercare blah
.
.
è l'espressione regolare per abbinare tutti i file.