Digamos que tengo 10 buffers abiertos, y quiero encontrar todas las ocurrencias de blah
los 10 buffers. ¿Cómo haría esto?
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.
.
es la expresión regular que coincide con todos los archivos.Además de lo que otros han mencionado, aquí hay otros dos recursos para esto.
M-x multi-isearch-buffers
oM-x multi-isearch-buffers-regexp
(vanilla Emacs): búsqueda incremental en varios buffers.Si usa Icicles , puede usar
icicle-search
(oicicle-occur
cualquier otraicicle-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, existeA
en Dired. Pero no preguntó sobre la búsqueda de archivos).fuente
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:Esto se abrirá
helm-multi-occur
y luego seleccionará todos los buffers. En lugar de usarM-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 conC-n
yC-p
y marque los buffers conC-SPC
. Una vez que todos los búferes estén marcados, presioneRET
para aceptar los búferes marcados y comenzar a buscar.Si agrega lo siguiente a su archivo init:
Luego puede vincular el comando
my-helm-multi-occur-buffers
para hacer una ocurrencia múltiple en todos los buffers respaldados por archivos.fuente
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.fuente
Puede usar el
ibuffer
modo para marcar los búferes que desea buscar. Llameibuffer-do-isearch
(vinculadoM-s a C-s
de forma predeterminada) para buscar texto, oibuffer-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.fuente
Aquí es otra forma con el timón:
M-x helm-mini M-a C-s blah
. Después de invocarhelm-mini
,M-a
marcará todos los búferes de apertura y luegoC-s blah
se producirá una ocurrencia múltiple en los búferes marcados.fuente
Además, una solución usando helm-mode es con
helm-swoop
.Utilizar
luego, para buscar en todos los buffers abiertos, escriba
luego, simplemente escriba
blah
para buscarlo en todos los buffers. En una ventana diferente mostrará todas las ocurrencias.Alternativamente, solo puede escribir
luego, marque todos los búferes con los que desea buscar
M-SPC
oC-SPC
, presioneRET
y busqueblah
.fuente