在emacs23中,如何绑定C-<;回报>;至C-<;回报>;而不是C-J

在emacs23中,如何绑定C-<;回报>;至C-<;回报>;而不是C-J,emacs,key-bindings,emacs23,Emacs,Key Bindings,Emacs23,我正在尝试使用组织模式,每当我按下Crtl+return时,emacs就会执行C-J。我知道这一点,因为当我使用c-h k,然后按crtl+return时,emacs显示: “它与C-j绑定。” 我是否可以让它注册ctrl+return以便插入标题 我通过ubuntu 12.04 x64上的终端使用emacs23。当我在我的windows机器上执行此操作时,它会插入一个新标题。恐怕对于大多数终端来说,这不是一个有效的序列,因此他们无法将其发送到Emacs 如果改为运行GUI Emacs,则键绑定

我正在尝试使用组织模式,每当我按下Crtl+return时,emacs就会执行C-J。我知道这一点,因为当我使用c-h k,然后按crtl+return时,emacs显示: “它与C-j绑定。” 我是否可以让它注册ctrl+return以便插入标题


我通过ubuntu 12.04 x64上的终端使用emacs23。当我在我的windows机器上执行此操作时,它会插入一个新标题。

恐怕对于大多数终端来说,这不是一个有效的序列,因此他们无法将其发送到Emacs

如果改为运行GUI Emacs,则键绑定将起作用

是我所知道的唯一能够(我认为)支持所有正常Emacs绑定的终端软件。如果您可以编译它,那么您可以使用以下
.Xdefaults-(主机名)
(或者
.Xresources
,如果您在编辑后重新合并),尝试使用它来获得基本支持:

XTerm*metaSendsEscape: true
XTerm*modifier: meta
XTerm*modifyOtherKeys: 1
实际上,您需要
XTerm*modifyOtherKeys:2
来完全扩展序列(否则您仍然无法键入
C-M-%
之类的内容),但默认情况下,该设置将中断大多数键序列,现在我无法告诉您如何正确配置该设置(我所看到的唯一一个例子——xterm-extras.el,如上所述,并在下载中提供——对我不起作用)


我主要使用GUI Emacs,但我希望它能正常工作,因此如果有人成功使用xterm-extras.el或类似工具,请大声说出来。

恐怕这对大多数终端来说都不是一个有效的序列,所以他们根本无法将它发送给Emacs

如果改为运行GUI Emacs,则键绑定将起作用

是我所知道的唯一可以(我认为)支持所有正常Emacs绑定的终端软件。如果您对编译该软件没问题,那么您可以使用以下
.Xdefaults-(hostname)
(或者
.Xresources
,如果您在编辑后重新合并)来尝试它,以获得基本的支持:

XTerm*metaSendsEscape: true
XTerm*modifier: meta
XTerm*modifyOtherKeys: 1
实际上,您需要
XTerm*modifyOtherKeys:2
来完全扩展序列(否则您仍然无法键入
C-M-%
之类的内容),但默认情况下,该设置将中断大多数键序列,现在我无法告诉您如何正确配置该设置(我所看到的唯一一个例子——xterm-extras.el,如上所述,并在下载中提供——对我不起作用)

我主要使用GUI Emacs,但我希望它能正常工作,因此如果有人成功使用xterm-extras.el或类似工具,请大声说出来。

可能。正如@phils所说,C-Enter通常不是绝大多数终端模拟器的有效序列。这是因为当您按下一个键或组合键时,终端会发送一个s字符序列到相关应用程序。按a键发送
a
,而按Enter键发送
CR
-回车(也称为
^M
\r
\015

现代终端中实际实现的序列大多只是它们模拟的早期物理终端(尤其是VT-100)的遗留问题。这些机器不允许将Ctrl与每个键(例如功能键)结合使用,因此C-F1不可能,并且没有定义转义序列。同样,C-Enter没有控制序列,因此当您按下它时,终端忽略Ctrl,只看到Enter

但是,您可以在终端中定义自己的转义序列,然后将其绑定到emacs中的正确组合键。我可以使用此方法来使用C-Enter。不幸的是,这仍然有点麻烦,因为它需要大量配置,并且您可能仍然无法使用某些序列(C-M-%在konsole不适用于我)。与@phils一样,我已经开始使用GUI,但我希望更好地与我的终端集成。

可能。正如@phils所说,C-Enter通常不是绝大多数终端模拟器的有效序列。这是因为当你按下一个键或组合键时,终端会向相关应用程序发送一个字符序列打开。按a键发送
a
,而按Enter键发送
CR
-回车(也称为
^M
\r
\015

现代终端中实际实现的序列大多只是它们模拟的早期物理终端(尤其是VT-100)的遗留问题。这些机器不允许将Ctrl与每个键(例如功能键)结合使用,因此C-F1不可能,并且没有定义转义序列。同样,C-Enter没有控制序列,因此当您按下它时,终端忽略Ctrl,只看到Enter


但是,您可以在终端中定义自己的转义序列,然后将其绑定到emacs中的正确组合键。我可以使用此方法来使用C-Enter。不幸的是,这仍然有点麻烦,因为它需要大量配置,并且您可能仍然无法使用某些序列(C-M-%在konsole不适用于我)与@phils一样,我已经开始使用GUI,但我希望与我的终端更好地集成。

如果您愿意安装Emacs软件包并配置您的终端,我编写了一个Emacs软件包,它可以教Emacs和终端如何正确识别所有PC键盘键和修改键组合:


它的默认配置允许对CtrlReturn组合进行编码,这允许Emacs将其与CtrlJ区分开来。

如果您愿意安装Emacs软件包并配置您的终端,我编写了一个Emacs软件包,它可以教Emacs和终端如何正确识别所有PC键盘键和修改键组合:

其默认配置启用encodin