我想在 bash 中为 readline 命令“history-search-backward”设置一个键绑定,以便组合控制+其他键(我正在使用2作为示例),但是我无法这样做。
(编辑:看来问题在于我选择了2作为示例键。我尝试使用 \Cl,它工作正常。如果有人解释为什么 2 不起作用,我仍然会接受答案)
经过几次尝试后,我的 ~/.inputrc 现在看起来像这样
set bind-tty-special-chars off
"\C-2": history-search-backward
但它不起作用,bind -p | grep "-2" 什么也没给出。如果我尝试不使用控制键,它会起作用:
"C-2": history-search-backward
我可以通过按序列 C + - + 2 在历史记录中进行搜索。
bind -p 以 \C 形式提供控制,例如:
"\C-w": unix-word-rubout
我已经在 inputrc 中尝试了不同的格式:
Control-2: history-search-backward
Ctrl-2: history-search-backward
"Control-2": history-search-backward
但没有任何效果。
"\e2": history-search-backward
如果我按下 Esc 然后按 2 就可以了。
有人可以帮忙吗?
设置:
Fedora 11:
Bash 版本 4.0.23(1)
GNU Readline 5.2(根据手册页)
答案1
Control-2 没有 ASCII 代码。Control-@ 到 Control-_ 对应于控制代码 0x00 (NUL) 到 0x1F (单位分隔符)。例如,Control-I 的代码是“I”的代码 (0x49) 减去 0x40 = 0x09 (HT,又名制表符)。Control+(不在 @ 到 _ 块中的其他字符)没有固定定义。
自行处理键盘的程序可以以任意方式解释 Control 键与任何其他键的组合。但像 bash 这样通过终端读取输入的程序甚至无法看到 Control-2。