有没有一种方式可以将emacs宏转换成elisp,不像
谢谢您的帮助。
M-x insert-kbd-macro
的方式,而是将实际的活动转换为elisp语句。谢谢您的帮助。
(switch-to-buffer ".emacs")
在完成时,还有各种类型的扩展交互(dabbrev
,hippie-expand
等)。
一个起点可以是 M-x edit-last-kbd-macro,它会显示如下内容(在我的情况下):
;; Keyboard Macro Editor. Press C-c C-c to finish; press C-x k RET to cancel.
;; Original keys: C-x b .em <tab> RET
Command: last-kbd-macro
Key: none
Macro:
C-x b ;; switch-to-buffer
.em ;; self-insert-command * 3
<tab> ;; pabbrev-expand-maybe
RET ;; newline-and-indent
'newline-and-indent
,这是不正确的,因为在宏执行时,迷你缓冲区是活动的,而绑定实际上是'minibuffer-complete-and-exit
。同样,TAB的正确绑定是'minibuffer-complete
。我制作了一个软件包,可以在https://github.com/Silex/elmacro找到。它有一些小问题,但是它的功能还算不错......例如,下面的宏:
F3 C-e M-b M-u C-a C-n F4
生成以下elisp代码:
(defun upcase-last-word ()
"Change me!"
(interactive)
(move-end-of-line 1)
(backward-word 1)
(upcase-word 1)
(move-beginning-of-line 1)
(next-line 1 1))
(insert ". ")
与“真正输入”命令之间的区别以及适用于当前模式的命令,这真的很酷。强大! - grettke