如何在 emacs 中为键绑定设置别名?

Nik*_*yks 3 keyboard-shortcuts emacs key-binding

例如,我经常使用C-c a a它,并且希望轻松地将其映射到f1.

\n\n

我知道我可以搜索第一个绑定最终调用的函数(这次是org-agenda-list),但我正在寻找更通用的解决方案。我认为我不能使用(global-set-key KEY\xc2\xa0COMMAND),因为我不确定按键COMMAND本身是否是 a (但也许可以是?)

\n\n

那么如何将“多次连续按键”绑定到另一个绑定呢?

\n

小智 5

您正在寻找的代码是:

(define-key keymap-1 (kbd "new prefix")
 (lookup-key keymap-2 (kbd "old prefix")))
Run Code Online (Sandbox Code Playgroud)

您通常不需要知道键盘映射的名称作为表达式 (current-global-map)(current-local-map)返回有效的全局和本地映射。尽管 emacs 手册说您可以重新映射任何功能键,但我发现如果您尝试重新映射 f1、f2、f3、f4 或 f10,可能会发生奇怪的事情。因此我通常会重新映射 f5 或 f6。作为我的 .emacs 文件的示例,代码:

(add-hook 'planner-mode-hook
    #'(lambda ()
        (local-set-key (kbd "M-RET") 'muse-insert-list-item)
        (local-set-key (kbd "M-S-RET") 'pcomplete)
        (define-key (current-local-map) (kbd "<f5>")
          (lookup-key (current-local-map) (kbd "C-c C-j")))))
Run Code Online (Sandbox Code Playgroud)

在规划器模式下设置M-RETM-S-RET,并将前缀 f5设置为该模式下的别名C-c C-j

但请注意,它并不总是像lookup-key看起来理解的宏那样工作,不幸的是,宏在键盘映射中是合法的。在这种情况下,您通常可以找到解决方法。有问题再问。