Очень часто мне нужно выполнять набор шагов, требующих нескольких нажатий клавиш. Для того же сеанса эти шаги могут быть записаны в макросе клавиатуры.
Примером является сохранение часто выполняемой операции поиска / замены в виде макроса клавиатуры. Но этот макрос теряется, когда я покидаю emacs.
Как я могу сохранить мой часто используемый макрос клавиатуры как функцию Lisp?
Для простоты я хочу сохранить действие замены "abc" на "def" в качестве функции, чтобы я мог повторно использовать ее в сеансах emacs.
источник
insert-kbd-macro
. Это ответ на вопрос (а остальная часть этого ответа предоставляет дополнительную помощь).insert-kbd-macro
зависит от того, назвали ли вы его, используяkmacro-name-last-macro
(как в ответе выше) илиname-last-kbd-macro
.name-last-kbd-macro
формат (как упомянуто выше @phils), вы получите строку, а не функцию.fset
привязка к символу позволяет вам выполнить макрос, используя Mx, но не вызывать его из lisp (commandp
->t
,functionp
->nil
). Как ни странно, даже вызов черезcall-interactively
него не работает (хотя вы можете использовать егоexecute-kbd-macro
для запуска).@lunaryorn уже упоминал о elmacro, но как автор этого пакета я подумал, что было бы неплохо привести пример.
Если вы записываете макрос, как это:
F3 C-e M-b M-u C-a C-n F4
Затем выполнение M-x elmacro-show-last-macro upcase-last-wordсоздает буфер с:
источник
Пакет elmacro позволяет вам просматривать последний записанный макрос как правильный Emacs Lisp M-x elmacro-show-last-macro.
источник