Si je dois refaire le nom d'une variable, j'utilise ag et plusieurs curseurs .
Mais quand je dois supprimer / ajouter / déplacer des blocs de code, j'utilise des macros de clavier. Mais je dois basculer vers chaque tampon et lancer manuellement l'exécution de cette macro.
Existe-t-il un moyen de simplement sélectionner les tampons ouverts d'Ibuffer (ou les fichiers de dired) et d'exécuter la dernière macro de clavier enregistrée sur chacun d'eux?
la source
t
pour basculer les marques etk
supprimer les entrées marquées. Ung
rafraîchissement ultérieur restaurera les lignes supprimées.M-{
etM-}
pour passer aux éléments marqués suivants et précédents dans Ibuffer et dired.Voici une commande qui rend l'exécution de commandes, de macros et l'évaluation d'expressions Lisp dans plusieurs fichiers une évidence. Notez que l'argument préfixe permet d'exécuter une macro pour chaque fichier jusqu'à ce qu'une erreur se produise. J'ai déjà posté cela sur superutilisateur mais cela fonctionne si bien que je pensais que les personnes venant sur cette page pourraient également le trouver utile. J'aime lier cela à «E» en dired.
Mise à jour: l'ancienne version de cette fonction ne supportait que les macros. La mise à jour est à la fois plus simple et plus puissante, permettant d'exécuter des commandes arbitraires (par séquence de clés ou nom) ainsi que des expressions Lisp. Il est maintenant également prudent de consigner toutes les erreurs dans le tampon des messages .
la source
Modification des fichiers sélectionnés dans
dired
La solution ci-dessous nécessite l'installation du
dired+
package, qui est disponible sur Melpa.Tout d'abord, convertissez votre macro de clavier en fonction elisp. Voici une emacs.SE QnA connexe (Comment enregistrer une macro clavier en tant que fonction Lisp?).
C'est encore plus rapide si vous savez comment modifier directement tous les fichiers à l'aide d'une fonction elisp. Supposons que vous souhaitiez ajouter "- * - mode: org - * -" au début de tous les fichiers sélectionnés en dired. 1
Dans ce cas, l'exécution de la fonction elisp ci-dessous dans chacun des fichiers sélectionnés fonctionnerait.
Il suffit donc d'évaluer la fonction ci-dessus pour l'instant; il sera utilisé à une étape ultérieure ci-dessous.
M-x dired
et ouvrez le répertoire contenant les fichiers dans lesquels vous souhaitez exécuter la fonction ci-dessus.m
clé (liée àdired-mark
indired
).C-u @
et sélectionnez le nom de la fonction que vous avez évaluée à l'étape 1 (my/set-org-mode
).@
est lié àdiredp-do-apply-function
ce qui est défini dansdired+.el
.C-x s !
pour enregistrer tous les fichiers modifiés en une seule fois.1 : Inspiré de cette question sur reddit .
la source