我正在使用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)))
第一行将一个未绑定的键绑定到该函数。第二行将已在组织模式下绑定的键绑定到该函数。其余的行定义了钩子。
我重新启动Emacs并描述密钥。C-c C-x C-SPC
绑定到my-function
并C-c C-x C-z
绑定到org-resolve-clocks
组织缓冲区中的默认值和my-function
其他位置。如果我使用以下命令在组织缓冲区中交互式运行绑定代码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)。
如何在主要模式下覆盖set中的绑定?