Se eu precisar refatorar o nome de uma variável, utilizarei cursores ag e múltiplos .
Mas quando tenho que fazer alguma remoção / adição / movimentação de blocos de código, uso macros do teclado. Mas preciso mudar para cada buffer e iniciar a macro manualmente.
Existe uma maneira de simplesmente selecionar os buffers abertos do Ibuffer (ou arquivos de dired) e executar a última macro de teclado gravada em todos eles?
buffers
dired
ibuffer
keyboard-macros
Kaushal Modi
fonte
fonte
t
para alternar as marcas ek
remover as entradas marcadas. Umag
atualização subsequente restaurará as linhas removidas.M-{
eM-}
pular para os itens marcados seguintes e anteriores no Ibuffer e direcionado.Aqui está um comando que torna a execução de comandos, macros e a avaliação de expressões Lisp em vários arquivos um acéfalo. Observe que o argumento prefix permite executar uma macro para cada arquivo até que ocorra um erro. Já postei isso no superusuário, mas funciona tão bem que achei que as pessoas que acessavam esta página também poderiam achar útil. Eu gosto de vincular isso a 'E' em dired.
Atualização: a versão antiga desta função suportava apenas macros. O atualizado é mais simples e mais poderoso, permitindo executar comandos arbitrários (por sequência ou nome de chave), bem como expressões Lisp. Agora também é cuidadoso registrar quaisquer erros no buffer de Mensagens .
fonte
Modificando arquivos selecionados no
dired
A solução abaixo precisa da instalação do
dired+
pacote, que está disponível no Melpa.Primeiro, converta a macro do teclado em uma função elisp. Aqui está um emacs.SE QnA relacionado (como salvar uma macro de teclado como uma função Lisp?).
É ainda mais rápido se você souber como deseja modificar todos os arquivos usando uma função elisp diretamente. Digamos que você queira adicionar "- * - mode: org - * -" no início de todos os arquivos selecionados em dired. 1 1
Nesse caso, a execução da função elisp abaixo em cada um dos arquivos selecionados funcionaria.
Portanto, basta avaliar a função acima por enquanto; ele será usado em uma etapa posterior abaixo.
M-x dired
e abra o diretório que contém os arquivos nos quais você deseja executar a função acima.m
chave (obrigado adired-mark
nosdired
).C-u @
e selecione o nome da função que você avaliou na etapa 1 (my/set-org-mode
).@
está vinculado aodiredp-do-apply-function
qual está definido emdired+.el
.C-x s !
para salvar todos os arquivos modificados de uma só vez.1 : Inspirado nesta pergunta no reddit .
fonte