我想在 EMACS 中使用 Ctrl + Tab,但 Emacs org mode 已经绑定了这个组合键。如何使用我自己的绑定而不是 org-mode 的绑定。
在我的 .emacs 文件中,我使用:
(global-set-key (kbd "<C-tab>") 'switch-view )
除了在org-mode中,它可以在任何地方正常工作。
我想在 EMACS 中使用 Ctrl + Tab,但 Emacs org mode 已经绑定了这个组合键。如何使用我自己的绑定而不是 org-mode 的绑定。
在我的 .emacs 文件中,我使用:
(global-set-key (kbd "<C-tab>") 'switch-view )
除了在org-mode中,它可以在任何地方正常工作。
你描述的键绑定在org.el
中定义如下:
(org-defkey org-mode-map [(control tab)] 'org-force-cycle-archived)
这意味着它仅在org-mode-map
中有效,这是org-mode的本地按键映射之一。以下代码添加了一个在org-mode启动时运行的hook。它只是从org-mode-map
中删除了该按键绑定。
(add-hook 'org-mode-hook
'(lambda ()
(define-key org-mode-map [(control tab)] nil)))
将此代码添加到您的.emacs文件中,然后重新启动emacs。次要模式也可以有本地键位映射;每当次要模式生效时,其键位映射中的定义会覆盖主模式的本地键位映射和全局键位映射
(http://www.gnu.org/software/emacs/manual/html_node/emacs/Local-Keymaps.html)
这样,您就不需要每次遇到破坏您按键绑定的模式时都要深入研究主模式的本地键位映射。这个不起作用,因为正如您所说,org-mode使用自己的C-TAB按键绑定。换句话说,即使您定义了全局按键绑定,一旦调用org-mode,它就会用本地按键绑定覆盖该绑定。
但是,您可以添加一个回调函数,每当您启动org-mode时调用该函数,在该回调函数中将C-TAB重置为调用switch-view:
(add-hook 'org-mode-hook (lambda () (local-set-key [(control tab)] 'switch-view)))