如何从主要模式重新绑定

如何从主要模式重新绑定

我正在使用 Org-mode,想要覆盖默认C-c C-x C-z绑定到的本地绑定。org-resolve-clocks手动的

如本地键盘映射中所述,主模式和次模式可以定义本地键盘映射。...如果您希望更改其中一个键盘映射,则必须使用模式钩子(请参阅钩子)。

所以我的里面有这些行~/.emacs

(global-set-key (kbd "C-c C-x C-SPC") 'my-function)

(global-set-key (kbd "C-c C-x C-z") 'my-function)

(add-hook 'org-mode-hook
      (lambda ()
        (local-set-key (kbd "C-c C-x C-z") 'my-function)))

第一行将未绑定的键绑定到该函数。第二行将已在 org-mode 中绑定的键绑定到该函数。其余行定义了钩子。

我重新启动 Emacs 并描述键。C-c C-x C-SPC已绑定到my-functionC-c C-x C-z已绑定到org-resolve-clocksorg 缓冲区中的默认值以及my-function其他地方。如果我使用 以交互方式在 org 缓冲区中运行绑定代码M-:

(local-set-key (kbd "C-c C-x C-z") 'my-function)

那么密钥将被绑定到my-function而不是默认值。

我也尝试了另一个答案此主题是关于在 emacs 中设置主要模式特定的键绑定但失败了:

(with-eval-after-load 'org-mode
  '(define-key org-mode-map (kbd "C-c C-x C-SPC") 'my-function)
)

我正在运行 Emacs 25.3 (9.0)。

如何在主要模式下覆盖设置中的绑定?

答案1

你可以在 Org-mode 中使用以下命令绑定你的函数define-key

(define-key org-mode-map (kbd "C-c C-x C-z") 'my-function)

它将覆盖任何全局绑定并且仅在 org-mode 缓冲区中工作。

相关内容