1

我确实搜索了其他帖子,但无济于事。

使用C-xC-kn NameOfMacro,我可以将我的宏定义为一个名称(ddd 表示删除 DD 标记)并使用M-x ddd... np.随意重用它。

然后我在另一个缓冲区中打开我的 .emacs 并使用M-x insert-kbd-macro RET ddd RET将 lambda 代码插入其中。工作得很好。

我也曾经C-xC-kb将它分配给一个数字,就像 Emacs 手册显示的那样:(C-xC-kb4我选择 4 因为“d”是第四个字母)。然后我可以随意重用它C-xC-k4

回到我的 .emacs 缓冲区并M-x insert-kbd-macro输入单个数字“4”,它给了我一个“不匹配”错误。很奇怪,因为我实际上可以C-xC-k4在 .emacs 缓冲区中使用宏。我推断这insert-kbd-macro是保存单个数字命名宏的错误命令。

但是在手册中的 21.5 结尾处它说:

“如果你给出insert-kbd-macro一个数字参数,它会生成额外的 Lisp 代码来记录你绑定到宏名称的键(如果有的话),这样当你加载文件时,宏将被重新分配相同的键。”

我不明白...

seh,安格斯……请你的智慧。感谢所有回复的人。

PS 我认为我的问题是以下最后一篇文章:
如何在我的 Emacs 初始化文件中生成键盘宏?

4

2 回答 2

1

您误解了“给...一个数字参数”的指令。

交互式地,这意味着使用数字前缀参数。所以任何这些都足够了:

  • C-u8RETM-x insert-kbd-macro RET
  • M-1M-x insert-kbd-macro RET
  • C-9M-x insert-kbd-macro RET

您试图输入数字作为宏名称,这就是它找不到匹配项的原因(您的宏名称是ddd)。

于 2012-05-30T01:24:17.303 回答
0

注意 kmacro-name-last-macro (Cx Ck n) 为最后一个宏分配一个名称

然后 insert-kbd-macro 将给定名称的宏插入缓冲区。

不兼容的是 kmacro-bind-to-key (Cx Ck b),它将最后一个宏绑定到一个(不是名称)。

于 2012-05-30T01:25:04.767 回答