如何在 Emacs 组织模式中覆盖键绑定

jus*_*don 4 emacs org-mode

我刚刚更新了 emacs org-mode 并且在访问 org 文件时,此绑定生效:

C-TAB (org-force-cycle-archived) 循环一棵树,即使它被标记为 ARCHIVE。

禁用此绑定的最佳方法是什么?

我使用 C-Tab 在窗口之间移动。

我尝试创建一个钩子,但这不起作用。本地键绑定仍然优先。

(defun my-org-mode-hook ()
  (define-key global-map '[(control tab)] 'other-window)
  (define-key global-map '[(shift control tab)] 'my-other-window-back)
  (global-set-key '[(control tab)] 'other-window)
  (global-set-key '[(shift control tab)] 'my-other-window-back)
  (local-set-key '[(control tab)] 'other-window)
  (local-set-key '[(shift control tab)] 'my-other-window-back)
  )
(add-hook 'org-mode-hook 'my-org-mode-hook)
Run Code Online (Sandbox Code Playgroud)

law*_*ist 7

以下是我在 org-mode 中禁用的一些内容的示例——我使用过require,但您可以使用它来代替eval-after-load——每次加载 org-mode 缓冲区时都不需要这样做(例如,模式钩子是矫枉过正的):

(require 'org)

(define-key org-mode-map (kbd "<M-S-up>") nil)
(define-key org-mode-map (kbd "<M-S-down>") nil)
(define-key org-mode-map (kbd "<M-up>") nil)
(define-key org-mode-map (kbd "<M-down>") nil)
(define-key org-mode-map (kbd "<M-S-left>") nil)
(define-key org-mode-map (kbd "<M-S-right>") nil)
(define-key org-mode-map (kbd "<M-left>") nil)
(define-key org-mode-map (kbd "<S-left>") nil)
(define-key org-mode-map (kbd "<S-right>") nil)
(define-key org-mode-map (kbd "<S-up>") nil)
(define-key org-mode-map (kbd "<S-down>") nil)
(define-key org-mode-map (kbd "<M-right>") nil) 
(define-key org-mode-map (kbd "C-<tab>") nil)
(define-key org-mode-map (kbd "C-S-<tab>") nil)
(define-key org-mode-map (kbd "<C-up>") nil)
(define-key org-mode-map (kbd "<C-down>") nil)
Run Code Online (Sandbox Code Playgroud)