emacs,在 defun 函数中调用一个 kbd 宏

emacs, call a kbd macro in defun function

我在宏中定义了一系列键并将其插入到我的 .emacs 中,如下所示:

(fset 'xxx [keys]) 

有没有办法在defun函数中调用kbd宏xxx? 我试图像调用常规函数一样调用它,但它有一个错误 "definition of xxx is void"

提前谢谢你。

选项 1:

(execute-kbd-macro 'foo)

选项 2...

有两种方法可以为宏生成代码:

name-last-kbd-macrokmacro-name-last-macro

前者倾向于生成您所展示的代码。

后者方便地绑定到 C-xC-kn,生成一个 lambda 形式 用于宏——即函数——这意味着您可以在代码中调用它。

所以:

  • 定义宏。
  • C-xC-kn foo RET
  • 您现在可以使用 M-x foo
  • M-x insert-kbd-macro RET foo RET
  • 您现在可以编写调用 (foo).
  • 的代码

从 Elisp 中 运行 命令的方法是调用 execute-command。这适用于交互功能以及键盘宏。