Come trovo il testo su molti buffer aperti?


36

Diciamo che ho 10 buffer aperti e voglio trovare tutte le occorrenze di blahtutti i 10 buffer. Come lo farei?

Risposte:


31

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.


5
+1 per menzionare che .è l'espressione regolare per abbinare tutti i file.
user2699

12

Oltre a ciò che altri hanno menzionato, ecco altre due risorse per questo.

  1. M-x multi-isearch-bufferso M-x multi-isearch-buffers-regexp(Emacs vaniglia) - Ricerca incrementale su più buffer.

  2. 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.)


10

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.


3
Potresti anche voler guardare il helm-swooppacchetto in MELPA. Fornisce questa funzionalità e consente anche una rapida modifica dei risultati.
Vamsi,


6

È 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.


1

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 .


0

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.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.