Sehr häufig musste ich die Schritte ausführen, die mehrere Tastenanschläge erforderten. Für dieselbe Sitzung können diese Schritte in einem Tastaturmakro aufgezeichnet werden.
Ein Beispiel ist das Speichern eines häufig ausgeführten Such- / Ersetzungsvorgangs als Tastaturmakro. Aber dieses Makro geht verloren, wenn ich Emacs beende.
Wie kann ich mein häufig verwendetes Tastaturmakro als Lisp-Funktion speichern?
Der Einfachheit halber möchte ich die Aktion des Ersetzens von "abc" durch "def" als Funktion speichern, damit ich sie in allen Emacs-Sitzungen wiederverwenden kann.
quelle
insert-kbd-macro
. Das ist die Antwort auf die Frage (und der Rest dieser Antwort bietet zusätzliche Hilfe).insert-kbd-macro
hängt davon ab, ob Sie es mitkmacro-name-last-macro
(wie in der obigen Antwort) oder benannt habenname-last-kbd-macro
.name-last-kbd-macro
Formats (wie von @phils oben erwähnt) eine Zeichenfolge und keine Funktion erhalten.fset
Wenn Sie das einem Symbol zuweisen, können Sie das Makro mit Mx ausführen, aber nicht mit lisp (commandp
->t
,functionp
->nil
) aufrufen . Merkwürdigerweise fordern sie sogar übercall-interactively
nicht funktioniert (obwohl Sie können verwendet werdenexecute-kbd-macro
, um sie auszuführen).elmacro wurde bereits von @lunaryorn erwähnt, aber als Autor dieses Pakets fand ich es schön, ein Beispiel zu liefern.
Wenn Sie ein Makro wie folgt aufnehmen:
F3 C-e M-b M-u C-a C-n F4
Dann M-x elmacro-show-last-macro upcase-last-worderzeugt doing einen Puffer mit:
quelle
Mit dem elmacro- Paket können Sie das zuletzt aufgezeichnete Makro als Emacs Lisp ansehen M-x elmacro-show-last-macro.
quelle