emacs:使用通用参数为多个命令分配单个键绑定

时间:2014-06-18 21:56:21

标签: emacs elisp

这是我的尝试:

(global-set-key [M-left] (key-binding (kbd "C-u C-@")))

在评估上述表达式后,调用alt + left会向我显示消息<M-left> is undefined。但是,以下内容有效:

(global-set-key [M-left] (key-binding (kbd "C-u")))

但这只是我命令的universal argument部分。如何将这两个命令合并为一个Emacs键绑定?

2 个答案:

答案 0 :(得分:2)

有两种方法可以做到这一点:交互式定义Keyboard Macro或编写函数:

(define-key global-map [M-left]
  (lambda ()
    (interactive)
    (set-mark-command t)))

答案 1 :(得分:1)

sds提供了解决方案,但为了澄清,如果您评估(key-binding (kbd "C-u C-@")),您会看到它返回nil - 因为这不是绑定的键序列。

实际上 Cu 运行命令universal-argument,它负责从用户那里读取后续键序列( C - @ 在你的情况下)。