
我正在使用 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
組織緩衝區中的預設值以及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)
它將覆蓋任何全域綁定,並且僅在組織模式緩衝區中工作。