如何将函数绑定到 bash 上的 Control-2 键组合

Nun*_*tez 4 bash

我想在 bash 中将“history-search-backward”readline 命令的键绑定设置为Control + 一些其他键的组合(我以2为例),但我无法这样做。

(编辑:似乎问题是我选择2作为示例键。我尝试使用 \Cl 并且它正在工作。如果有人解释为什么 2 不起作用,我仍然会接受答案)

经过几次尝试,我的 ~/.inputrc 现在看起来像这样

set bind-tty-special-chars off
"\C-2": history-search-backward
Run Code Online (Sandbox Code Playgroud)

但它不起作用并绑定 -p | grep "-2" 什么也没给。如果我在没有控制键的情况下尝试某些操作,它会起作用:

"C-2": history-search-backward
Run Code Online (Sandbox Code Playgroud)

我可以通过按序列 C + - + 2 在历史记录中进行搜索。

bind -p 以 \C 形式给出控制,例如:

"\C-w": unix-word-rubout
Run Code Online (Sandbox Code Playgroud)

我在 inputrc 中尝试了不同的格式:

Control-2: history-search-backward
Ctrl-2: history-search-backward
"Control-2": history-search-backward
Run Code Online (Sandbox Code Playgroud)

但没有任何效果。

"\e2": history-search-backward
Run Code Online (Sandbox Code Playgroud)

如果我按 Escape 然后按 2 就可以了。

任何人都可以帮忙吗?

设置:
Fedora 11:
Bash 版本 4.0.23(1)
GNU Readline 5.2(根据手册页)

Pet*_*sel 6

Control-2 没有 ASCII 代码。Control-@ 到 Control-_ 对应于控制代码 0x00 (NUL) 到 0x1F (Unit Separator)。例如,Control-I 的代码是 'I' (0x49) 减去 0x40 = 0x09(HT,又名制表符)的代码。Control+ 没有固定定义(@ 到 _ 块中没有的其他一些字符)。

自行处理键盘的程序可以按照他们喜欢的任何方式与任何其他键结合解释 Control。但是像 bash 这样通过终端读取输入的程序甚至无法看到 Control-2。