1

我想在我的 ~/.inputrc 中为 \Cm 自定义绑定。但是,当我更换它时,我无法再输入任何命令。例如,

"\C-m": vi-forward-word

问题似乎是存在默认绑定

"\C-m": accept-line

这本身不是问题,但似乎其他程序(终端?)发送 ^M(Ctrl-m)以指示回车。在我的设置中,我有 urxvt,但我也尝试了 xterm,行为是相同的(一旦我在 inputrc 的末尾添加“\Cm”vi-forward-word 绑定,返回就不再起作用)。

现在我改变这个,我愿意修补任何涉及的程序/库。我的问题是:我应该在哪里寻找相关的作品?我检查了 readline 源代码,但找不到任何表明 \Cm 在内部被重用的东西。同样,我检查了 urxvt,但在代码中找不到将回车映射到 \Cm 的任何内容(这将是我对导致此行为的最佳猜测)。有趣的是 rxvt.7.pod 包含

KP_Enter  ^M      ESC O M

和 rxvt-unicode.termcap 与

...:cr=^M:...

但是,这两个文件似乎主要是文档或至少没有安装。我对 terminfo 文件及其参与整个终端工作的了解有些有限。readline 和终端之间的交互也是如此(在我的示例中是在 urxvt 之前调用 readline 吗?)。因此,如果有人有关于在哪里看的指针,我将不胜感激。

顺便说一句:我添加的那一刻

"\r": accept-line

"\Cm" 绑定之后,我恢复了原始行为(即返回工作)。如果我在 "\Cm" 之前添加该行,则返回仍然无法按预期工作。

干杯!

德索

4

1 回答 1

0

, "\r", "\C-m",都是相同"C-M"^M字符:ASCII CR(回车),通常回车映射到换行符(ASCII LF换)。当然,这种行为是由 readline 假设的。.inputrc使用 readline 库的应用程序原则上可以抑制映射,但是您可以仅使用文件和 shell做的有用的事情很少。

线

KP_Enter  ^M      ESC O M

在这里无关:它指的Enter是数字键盘上的键,而不是Enter主键盘上的键。

于 2016-01-23T01:08:29.650 回答