如何从主要模式重新绑定


1

我正在使用org-mode,并且想覆盖的本地绑定C-c C-x C-zorg-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-functionC-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中的绑定?

Answers:


2

您可以使用define-key以下方式在组织模式下绑定功能:

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

它将覆盖所有全局绑定,并且仅在组织模式缓冲区中起作用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.