Wenn ich ein Refactoring von Variablennamen durchführen muss, verwende ich ag und mehrere Cursor .
Aber wenn ich Codeblöcke entfernen / hinzufügen / verschieben muss, verwende ich Tastaturmakros. Aber ich muss zu jedem Puffer wechseln und diesen Makro-Lauf manuell starten.
Gibt es eine Möglichkeit, einfach die geöffneten Puffer von Ibuffer (oder Dateien von dired) auszuwählen und das zuletzt aufgezeichnete Tastaturmakro für alle auszuführen?
quelle
t
Markierungen umschalten undk
die markierten Einträge entfernen. Bei einer anschließendeng
Aktualisierung werden die entfernten Zeilen wiederhergestellt.M-{
undM-}
zu den nächsten und vorherigen markierten Elementen in Ibuffer und dired springen.Hier ist ein Befehl, mit dem das Ausführen von Befehlen, Makros und das Auswerten von Lisp-Ausdrücken in mehreren Dateien zum Kinderspiel wird. Beachten Sie, dass mit dem Präfixargument für jede Datei ein Makro ausgeführt werden kann, bis ein Fehler auftritt. Ich habe dies bereits im Superuser gepostet, aber es funktioniert so gut, dass ich dachte, die Leute, die auf diese Seite kommen, könnten es auch nützlich finden. Ich mag es, dies in dired an 'E' zu binden.
Update: Die alte Version dieser Funktion unterstützt nur Makros. Das aktualisierte ist sowohl einfacher als auch leistungsfähiger und ermöglicht die Ausführung beliebiger Befehle (nach Tastenfolge oder Name) sowie von Lisp-Ausdrücken. Es wird jetzt auch darauf geachtet, Fehler im Nachrichtenpuffer zu protokollieren .
quelle
Ausgewählte Dateien in ändern
dired
Die folgende Lösung erfordert die Installation des
dired+
Pakets, das auf Melpa verfügbar ist.Konvertieren Sie zunächst Ihr Tastaturmakro in eine Elisp-Funktion. Hier ist eine verwandte emacs.SE QnA (Wie speichere ich ein Tastaturmakro als Lisp-Funktion?).
Es ist noch schneller, wenn Sie wissen, wie Sie alle Dateien mithilfe einer Elisp-Funktion direkt ändern möchten. Angenommen, Sie möchten "- * - mode: org - * -" am Anfang aller ausgewählten Dateien in dired hinzufügen. 1
In diesem Fall würde das Ausführen der folgenden Elisp-Funktion in jeder der ausgewählten Dateien funktionieren.
Bewerten Sie also zunächst die obige Funktion. Es wird in einem späteren Schritt weiter unten verwendet.
M-x dired
und öffnen Sie das Verzeichnis mit den Dateien , in denen Sie die obige Funktion ausgeführt werden soll.m
Schlüssel (andired-mark
in gebundendired
).C-u @
Sie den Namen der Funktion aus, die Sie in Schritt 1 (my/set-org-mode
) bewertet haben .@
ist gebunden andiredp-do-apply-function
die in definiert istdired+.el
.C-x s !
, um alle geänderten Dateien auf einmal zu speichern.1 : Inspiriert von dieser Frage auf reddit .
quelle