Respostas:
Aderindo aos comandos internos do Emacs, você pode usar multi-occur
ou multi-occur-in-matching-buffers
( M-x multi-occur- TAB RET
). multi-occur
fornece controle fino solicitando que cada buffer seja usado, mas é tedioso. multi-occur-in-matching-buffers
permite inserir um regexp para corresponder aos nomes dos arquivos (ele pesquisa apenas em buffers que estão visitando arquivos); digite .
como o arquivo regexp para procurar em todos os buffers que estão visitando um arquivo.
Também existem funções para pesquisa incremental em uma lista de buffers ou arquivos, mas são tediosas como multi-occur
exigem a listagem dos buffers ou arquivos, um por um.
Para pesquisar todos os arquivos em um diretório ou arquivos que correspondam a determinados padrões, estejam eles abertos ou não, você pode usar grep
. Existem variantes rgrep
e grep-find
para procurar subdiretórios recursivamente.
Além do que os outros mencionaram - aqui estão dois outros recursos para isso.
M-x multi-isearch-buffers
ou M-x multi-isearch-buffers-regexp
(vanilla Emacs) - pesquisa incremental em vários buffers.
Se você usar Sincelos , poderá usar icicle-search
(ou icicle-occur
qualquer outro número de icicle-search
especializações) para pesquisar em vários arquivos ou buffers.
(Além de pesquisar e substituir buffers arbitrários , é claro que existem comandos que fazem isso em vários arquivos . Outros já mencionaram grep
, por exemplo. E é claro que há A
no Dired. Mas você não perguntou sobre a busca de arquivos.)
Isso pode ser feito com o comando através do comando helm-multi-occur
. Você pode instalar o helm a partir do melpa e, em seguida, chamar o comando da seguinte maneira:
M-x helm-multi-occur RET M-a RET
Isso será aberto helm-multi-occur
e, em seguida, selecione todos os buffers. Em vez de usar M-a
para marcar todos os buffers, você pode opcionalmente selecionar os buffers de interesse, um de cada vez. Navegue para cima e para baixo na lista com C-n
e C-p
e marque os buffers com C-SPC
. Depois que todos os buffers estiverem marcados, pressione RET
para aceitar os buffers marcados e começar a pesquisar.
Se você adicionar o seguinte ao seu arquivo 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)))))
Em seguida, você pode vincular o comando my-helm-multi-occur-buffers
para executar uma ocorrência múltipla em todos os buffers suportados por arquivos.
helm-swoop
pacote no MELPA. Ele fornece essa funcionalidade e permite a edição rápida dos resultados também.
swiper-all
do pacote swiper fornece uma ferramenta para fazer isso. É ainda incremental, por isso é atualizado conforme você digita.
Você pode usar o ibuffer
modo para marcar os buffers que deseja pesquisar. Ligue ibuffer-do-isearch
(vinculado M-s a C-s
por padrão) para procurar texto ou ibuffer-do-isearch-regexp
se precisar procurar uma expressão regular.
Se você não estiver familiarizado ibuffer
, inicie-o e dê uma olhada no menu Marcar para ver todas as maneiras pelas quais você pode escolher um conjunto de buffers nos quais operar.
Aqui é uma outra maneira com leme: M-x helm-mini M-a C-s blah
. Após a chamada helm-mini
, M-a
marcará todos os buffers de abertura e C-s blah
ocorrerá várias vezes nos buffers marcados.
Além disso, uma solução usando o modo helm está com helm-swoop
.
Usar
M-x helm-swoop RET
Em seguida, para pesquisar em todos os buffers abertos, digite
M-i
digite apenas blah
para pesquisar em todos os buffers. Em uma janela diferente, serão exibidas todas as ocorrências.
Como alternativa, você pode apenas digitar
M-x helm-multi-swoop
marque todos os buffers que deseja pesquisar M-SPC
ou C-SPC
pressione RET
e pesquise blah
.
.
é a expressão regular para corresponder a todos os arquivos.