emacs,在defun函数中调用kbd宏

emacs,在defun函数中调用kbd宏,emacs,elisp,Emacs,Elisp,我在宏中定义了一系列键,并将其插入my.emacs,如下所示: (fset 'xxx [keys]) 有没有办法在defun函数中调用kbd宏xxx? 我试图将其作为常规函数调用,但它有一个错误“xxx的定义是无效的” 先谢谢你 选项1: (execute-kbd-macro 'foo) 选择2 有两种方法可以为宏生成代码: name last kbd宏和kmacro name last宏 前者倾向于生成如您所示的代码 后者方便地绑定到C-xC-kn,为宏生成lambda形式——即函数——

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

(fset 'xxx [keys]) 
有没有办法在defun函数中调用kbd宏xxx? 我试图将其作为常规函数调用,但它有一个错误“xxx的定义是无效的”

先谢谢你

选项1:

(execute-kbd-macro 'foo)
选择2

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

name last kbd宏
kmacro name last宏

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

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

因此:

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

    • 从Elisp运行命令的方法是调用
      executecommand
      。这不仅适用于交互式函数,也适用于键盘宏。

      谢谢,我认为(执行kbd宏(符号函数'foo'))应该是不必要的。如果参数是符号,
      execute kbd macro
      使用其函数槽(如文档所示)。