我想在我的 ~/.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" 之前添加该行,则返回仍然无法按预期工作。
干杯!
德索