Risposte:
Attenendosi ai comandi Emacs incorporati, è possibile utilizzare multi-occuro multi-occur-in-matching-buffers( M-x multi-occur- TAB RET). multi-occuroffre un controllo accurato richiedendo l'utilizzo di ciascun buffer, ma è noioso. multi-occur-in-matching-buffersti 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-occurrichiedono 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 rgrepe grep-findcercare ricorsivamente le sottodirectory.
Oltre a ciò che altri hanno menzionato, ecco altre due risorse per questo.
M-x multi-isearch-bufferso 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-searchspecializzazioni) 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'è ADired. 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-occure quindi selezionerà tutti i buffer. Invece di utilizzare M-aper contrassegnare tutti i buffer, è possibile selezionare i buffer di interesse uno alla volta. Navigare su e giù nell'elenco con C-ne C-pe contrassegnare i buffer con C-SPC. Una volta contrassegnati tutti i buffer, premere RETper 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-buffersper eseguire un multiplo in tutti i buffer supportati da file.
helm-swooppacchetto in MELPA. Fornisce questa funzionalità e consente anche una rapida modifica dei risultati.
swiper-alldal pacchetto swiper fornisce uno strumento per farlo. È anche incrementale, quindi si aggiorna durante la digitazione.
È possibile utilizzare la ibuffermodalità per contrassegnare i buffer che si desidera cercare. Chiama ibuffer-do-isearch(associato per M-s a C-simpostazione predefinita) per cercare un testo o ibuffer-do-isearch-regexpse 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-acontrassegnerà tutti i buffer di apertura, quindi C-s blahsi 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 blahper 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-SPCo C-SPC, premere RETe cercare blah.
.è l'espressione regolare per abbinare tutti i file.