如何從主模式重新綁定綁定

如何從主模式重新綁定綁定

我正在使用 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-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 中的綁定?

答案1

您可以使用以下命令在組織模式下綁定您的函數define-key

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

它將覆蓋任何全域綁定,並且僅在組織模式緩衝區中工作。

相關內容