Respuestas:
Siguiendo los comandos integrados de Emacs, puede usar multi-occur
o multi-occur-in-matching-buffers
( M-x multi-occur- TAB RET
). multi-occur
le brinda un control preciso al solicitar que se use cada búfer, pero es tedioso. multi-occur-in-matching-buffers
le permite ingresar una expresión regular para que coincida con los nombres de los archivos (solo busca en los buffers que están visitando archivos); ingrese .
como el archivo regexp para buscar en todos los buffers que están visitando un archivo.
También hay funciones para la búsqueda incremental en una lista de buffers o archivos, pero son tediosos, multi-occur
ya que requieren enumerar los buffers o archivos uno por uno.
Para buscar en todos los archivos de un directorio, o en archivos que coincidan con ciertos patrones, estén abiertos o no, puede usarlos grep
. Hay variantes rgrep
y grep-find
para buscar subdirectorios de forma recursiva.
Además de lo que otros han mencionado, aquí hay otros dos recursos para esto.
M-x multi-isearch-buffers
o M-x multi-isearch-buffers-regexp
(vanilla Emacs): búsqueda incremental en varios buffers.
Si usa Icicles , puede usar icicle-search
(o icicle-occur
cualquier otra icicle-search
especialización) para buscar en múltiples archivos o buffers.
(Además de buscar y reemplazar en búferes arbitrarios , por supuesto, hay comandos que hacen eso en varios archivos . Otros han mencionado grep
, por ejemplo. Y, por supuesto, existe A
en Dired. Pero no preguntó sobre la búsqueda de archivos).
Esto se puede hacer con helm a través del comando helm-multi-occur
. Puede instalar helm desde melpa y luego llamar al comando de la siguiente manera:
M-x helm-multi-occur RET M-a RET
Esto se abrirá helm-multi-occur
y luego seleccionará todos los buffers. En lugar de usar M-a
para marcar todos los buffers, opcionalmente puede seleccionar los buffers de interés uno a la vez. Navegue hacia arriba y hacia abajo en la lista con C-n
y C-p
y marque los buffers con C-SPC
. Una vez que todos los búferes estén marcados, presione RET
para aceptar los búferes marcados y comenzar a buscar.
Si agrega lo siguiente a su archivo 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)))))
Luego puede vincular el comando my-helm-multi-occur-buffers
para hacer una ocurrencia múltiple en todos los buffers respaldados por archivos.
helm-swoop
paquete en MELPA. Proporciona esta funcionalidad y permite la edición rápida de los resultados también.
swiper-all
del paquete swiper proporciona una herramienta para hacer esto. Incluso es incremental, por lo que se actualiza a medida que escribe.
Puede usar el ibuffer
modo para marcar los búferes que desea buscar. Llame ibuffer-do-isearch
(vinculado M-s a C-s
de forma predeterminada) para buscar texto, o ibuffer-do-isearch-regexp
si necesita buscar una expresión regular.
Si no está familiarizado ibuffer
, enciéndalo y eche un vistazo al menú Mark para ver todas las formas en que puede elegir un conjunto de buffers en los que operar.
Aquí es otra forma con el timón: M-x helm-mini M-a C-s blah
. Después de invocar helm-mini
, M-a
marcará todos los búferes de apertura y luego C-s blah
se producirá una ocurrencia múltiple en los búferes marcados.
Además, una solución usando helm-mode es con helm-swoop
.
Utilizar
M-x helm-swoop RET
luego, para buscar en todos los buffers abiertos, escriba
M-i
luego, simplemente escriba blah
para buscarlo en todos los buffers. En una ventana diferente mostrará todas las ocurrencias.
Alternativamente, solo puede escribir
M-x helm-multi-swoop
luego, marque todos los búferes con los que desea buscar M-SPC
o C-SPC
, presione RET
y busque blah
.
.
es la expresión regular que coincide con todos los archivos.