我使用 Cx创建了一个宏( ...做了一些动作...... Cx),然后保存了宏 Cx Ck n 我的宏。然后我使用 M-x insert-kbd-macro
my-macro为我的.emacs文件生成代码。我重新启动了emacs并测试了我的宏,工作正常。
现在我需要编辑宏,所以我使用 C-x C-k e ,然后 M-x my-macro。我编辑,保存并运行新my-macro的测试,它工作正常。
当我为我的.emacs生成my-macro时, M-x insert-kbd-macro
my-macro ... [No Match]
我会尝试直接编辑.emacs中的宏,但它是作为lambda函数生成的,看起来很混乱。
答案 0 :(得分:3)
我从来没有做过很多键盘宏。然而,一些研究揭示了以下内容。
insert-kbd-macro
从变量last-kbd-macro
或kmacro-ring
获取键盘宏,而不是存储函数定义的全局obarray
。您将宏存储为insert-kbd-macro
插入的函数。 (这基本上是fset
所做的。)因此,insert-kbd-macro
找不到您的宏。
编辑键盘宏的两种可能方法:
kmacro-exec-ring-item
。my-macro
修改键盘宏edit-kbd-macro
。然后,您可以使用(insert (format "%S" (symbol-function 'my-macro)))
重新插入它。也许,有人有更好的答案......
注意,您也可以将第一个字符串分配给包含global-set-key
或local-set-key
的密钥。