我刚刚更新了 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)
答案1
下面是我在 Org-mode 中禁用的一些功能的示例——我使用了require
,但您也可以使用eval-after-load
——您不需要在每次 Org-mode 缓冲区加载时都这样做(例如,mode-hook 是多余的):
(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)
答案2
我使用 M-up 和 M-down 来更改文本大小时也遇到了类似的问题。如果您是 use-packager,此方法可解决该问题:-
(use-package org
:bind (:map org-mode-map
("<M-up>" . nil) ;; do not steal my keys!
("<M-down>" . nil) ;; ditto
("<C-f3>" . org-metaup) ;; use this instead
("<M-f3>" . org-metadown) ;; ditto
;; etc