Digamos que tenho 10 buffers abertos e desejo encontrar todas as ocorrências de blah
todos os 10 buffers. Como eu faria isso?
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.
.
é a expressão regular para corresponder a todos os arquivos.Além do que os outros mencionaram - aqui estão dois outros recursos para isso.
M-x multi-isearch-buffers
ouM-x multi-isearch-buffers-regexp
(vanilla Emacs) - pesquisa incremental em vários buffers.Se você usar Sincelos , poderá usar
icicle-search
(ouicicle-occur
qualquer outro número deicicle-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.)fonte
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:Isso será aberto
helm-multi-occur
e, em seguida, selecione todos os buffers. Em vez de usarM-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 comC-n
eC-p
e marque os buffers comC-SPC
. Depois que todos os buffers estiverem marcados, pressioneRET
para aceitar os buffers marcados e começar a pesquisar.Se você adicionar o seguinte ao seu arquivo init:
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.fonte
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.fonte
Você pode usar o
ibuffer
modo para marcar os buffers que deseja pesquisar. Ligueibuffer-do-isearch
(vinculadoM-s a C-s
por padrão) para procurar texto ouibuffer-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.fonte
Aqui é uma outra maneira com leme:
M-x helm-mini M-a C-s blah
. Após a chamadahelm-mini
,M-a
marcará todos os buffers de abertura eC-s blah
ocorrerá várias vezes nos buffers marcados.fonte
Além disso, uma solução usando o modo helm está com
helm-swoop
.Usar
Em seguida, para pesquisar em todos os buffers abertos, digite
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
marque todos os buffers que deseja pesquisar
M-SPC
ouC-SPC
pressioneRET
e pesquiseblah
.fonte