Respuestas:
Siguiendo los comandos integrados de Emacs, puede usar multi-occuro multi-occur-in-matching-buffers( M-x multi-occur- TAB RET). multi-occurle brinda un control preciso al solicitar que se use cada búfer, pero es tedioso. multi-occur-in-matching-buffersle 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-occurya 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 rgrepy grep-findpara buscar subdirectorios de forma recursiva.
Además de lo que otros han mencionado, aquí hay otros dos recursos para esto.
M-x multi-isearch-bufferso M-x multi-isearch-buffers-regexp(vanilla Emacs): búsqueda incremental en varios buffers.
Si usa Icicles , puede usar icicle-search(o icicle-occurcualquier otra icicle-searchespecializació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 Aen 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-occury luego seleccionará todos los buffers. En lugar de usar M-apara 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-ny C-py marque los buffers con C-SPC. Una vez que todos los búferes estén marcados, presione RETpara 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-bufferspara hacer una ocurrencia múltiple en todos los buffers respaldados por archivos.
helm-swooppaquete en MELPA. Proporciona esta funcionalidad y permite la edición rápida de los resultados también.
swiper-alldel paquete swiper proporciona una herramienta para hacer esto. Incluso es incremental, por lo que se actualiza a medida que escribe.
Puede usar el ibuffermodo para marcar los búferes que desea buscar. Llame ibuffer-do-isearch(vinculado M-s a C-sde forma predeterminada) para buscar texto, o ibuffer-do-isearch-regexpsi 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-amarcará todos los búferes de apertura y luego C-s blahse 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 blahpara 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-SPCo C-SPC, presione RETy busque blah.
.es la expresión regular que coincide con todos los archivos.