我想在EMACS中使用 Ctrl + Tab 供我自己使用,但是Emacs组织模式已经有了此限制。我如何使用自己的绑定而不是org-mode绑定。
在我的 .emacs 文件中,我使用:
(global-set-key (kbd "<C-tab>") 'switch-view )
除了org-mode
外,它可以在任何地方使用答案 0 :(得分:22)
您描述的键绑定在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。
答案 1 :(得分:5)
设置要在无处不在生效的键绑定的更健壮的方法,无论主要模式如何,都是使用自定义键映射定义全局次要模式。
次要模式也可以有本地键盘图;每当辅助模式生效时,其键映射中的定义都会覆盖主模式的本地键映射和全局键映射
(http://www.gnu.org/software/emacs/manual/html_node/emacs/Local-Keymaps.html)
这样,每次遇到破坏键绑定的模式时,您都不需要乱用主模式的本地键盘映射。
有关详细信息,请参阅此问答:
Globally override key binding in Emacs
答案 2 :(得分:2)
这不起作用,因为正如你所说,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)))
将以上行放在您的.emacs文件中,下次启动新的Emacs时,您应该好好去。