如何在 emacs 中为键绑定添加别名?

如何在 emacs 中为键绑定添加别名?

例如,我可以使用C-c a a很多,并且希望轻松地将其映射到f1

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

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

答案1

您正在寻找的代码是:

(define-key keymap-1 (kbd "new prefix")
 (lookup-key keymap-2 (kbd "old prefix")))

您通常不需要知道键映射的名称,因为表达式会 强制(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")))))

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

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

答案2

我认为,但没有尝试,你应该做这样的事情:

(defun org-execute-my-action ()
  (local-set-key (kbd "C-c q") 'org-name-of-function))

(add-hook 'org-mode-hook 'org-execute-my-action)

这个帖子似乎是可以了解更多详细信息的地方。

相关内容