【发布时间】:2016-04-21 19:49:50
【问题描述】:
我想在我的 ~/.inputrc 中为 \C-m 自定义绑定。但是,当我更换它时,我无法再输入任何命令。例如,
"\C-m": vi-forward-word
问题似乎是存在一个默认绑定
"\C-m": accept-line
这本身不是问题,但似乎其他程序(终端?)发送 ^M (Ctrl-m) 以指示回车。在我的设置中,我有 urxvt,但我也尝试了 xterm,行为是相同的(在我的 inputrc 末尾添加“\C-m”vi-forward-word 绑定后,返回不再有效)。
现在我想要改变了,我愿意修补任何涉及的程序/库。我的问题是:我应该在哪里寻找相关的作品?我检查了 readline 源代码,但找不到任何表明 \C-m 在内部被重用的东西。同样,我检查了 urxvt 但在代码中找不到将回车映射到 \C-m 的任何内容(这将是我对导致此行为的最佳猜测)。有趣的是有 rxvt.7.pod 包含
KP_Enter ^M ESC O M
和 rxvt-unicode.termcap 搭配
...:cr=^M:...
但是,这两个文件似乎主要是文档或至少没有安装。我对 terminfo 文件及其参与整个终端工作的了解有些有限。 readline 和终端之间的交互也是如此(在我的示例中是在 urxvt 之前调用 readline 吗?)。因此,如果有人能指出在哪里看,我将不胜感激。
顺便说一句:我添加的那一刻
"\r": accept-line
在 "\C-m" 绑定之后,我恢复了原始行为(即返回有效)。如果我在 "\C-m" 之前添加该行,返回仍然无法按预期工作。
干杯!
德索
【问题讨论】:
标签: readline libreadline rxvt