我正在使用 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-function
并C-c C-x C-z
已绑定到org-resolve-clocks
org 缓冲区中的默认值以及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 缓冲区中工作。