在EMACS org.mode中覆盖Ctrl选项卡

在EMACS org.mode中覆盖Ctrl选项卡,emacs,keyboard-shortcuts,org-mode,Emacs,Keyboard Shortcuts,Org Mode,我想在EMACS中使用Ctrl+Tab供我自己使用,但是EMACS组织模式已经有了这个绑定。如何使用自己的绑定而不是组织模式绑定 在我的.emacs文件中,我使用: (全局设置键(kbd“”)开关视图) 它在任何地方都可以工作,除了在组织模式下您描述的键绑定在org.el中定义如下: (组织定义组织模式图[(控制选项卡)]组织力循环存档) 这意味着它仅在组织模式的本地键映射之一的组织模式映射中有效。下面的代码添加了一个钩子,该钩子在组织模式启动时运行。它只是从组织模式映射中删除该键绑定 (添

我想在EMACS中使用Ctrl+Tab供我自己使用,但是EMACS组织模式已经有了这个绑定。如何使用自己的绑定而不是组织模式绑定

在我的.emacs文件中,我使用:

(全局设置键(kbd“”)开关视图)

它在任何地方都可以工作,除了在组织模式下

您描述的键绑定在
org.el
中定义如下:

(组织定义组织模式图[(控制选项卡)]组织力循环存档)
这意味着它仅在组织模式的本地键映射之一的组织模式映射中有效。下面的代码添加了一个钩子,该钩子在组织模式启动时运行。它只是从
组织模式映射
中删除该键绑定

(添加钩子组织模式钩子
"(lambda)
(定义关键组织模式图[(控制页签)]无)

将此代码添加到.emacs文件中,然后重新启动emacs。

这不起作用,因为正如您所说,组织模式对C-TAB使用自己的键绑定。换句话说,即使您定义了一个全局键绑定,只要您调用org模式,它也会用本地键绑定覆盖该绑定

但是,您可以添加一个回调函数,在启动组织模式时调用该函数,并在该回调函数中重置C-TAB以调用开关视图:

(添加hook“组织模式hook(lambda()(本地设置键[(控制选项卡)]”切换视图)))

在.emacs文件中放上一行,下次启动新的emacs时,您应该准备好了。

设置要在任何地方生效的键绑定(无论主模式如何)的一种更可靠的方法是使用自定义键映射定义全局次模式

次要模式也可以有本地密钥映射;每当次要模式生效时,其关键点映射中的定义将覆盖主要模式的本地关键点映射和全局关键点映射

()

这样,您就不必在每次遇到破坏键绑定的模式时都弄乱主模式的本地键映射

有关详细信息,请参阅此问答:

我在.emacs文件的末尾添加了上面的行,但没有任何影响。将该行添加到.emacs文件后是否重新启动了emacs?你使用哪个版本的Emacs?事实上,我想我更喜欢辣椒粉的版本。我也尝试过这个方法,它在GNU Emacs 23.1.1中对我有效。是的,我多次重新启动Emacs。GNU版本23.2在“-nw”模式下(lambda…?我在哪里添加这个“add hook”行?如果我可以将它添加到.emacs,它将是理想的:)我将这个hook添加到我的.emacs文件中,并且没有任何更改,我也尝试在org.el中注释ord defkey,但没有更改。我猜有某种预编译正在进行,因此修改后的org.el文件ignored@Zubair:是的,您可以将其添加到.emacs文件中。我用Emacs23.2和内置版本的组织模式进行了尝试。您不需要编辑org模式的源代码,但是如果org.elc(编译的Elisp)位于同一目录中,org.el将被忽略。您可以在不使用钩子的情况下尝试使用define键。只需启动Emacs,确保加载了组织模式(例如打开一个组织文件),并将以下内容粘贴到临时缓冲区(不带引号):“(定义关键组织模式映射[(控制选项卡)]nil”。现在将光标移到最后一个括号后面,然后按C-x C-e。这将计算最后一个表达式。尝试一下,如果这有一些效果。如果是这样,那就是钩子坏了。