这些键都不是波浪号键。他们都产生多个字符序列,如ESC [24~为F12关键,或ESC [15~为F5关键(虽然F1-F4都略有不同),甚至ESC [5~为PgUp关键。
你的唯一原因让一个波浪是因为bash的关键序列分析器消耗它知道(公共部分ESC [2),并停止,因为它知道,一旦该全序列将是未知的。接下来的所有内容(不一定是波浪号!)都被单独解释。
请注意,这种行为在基于终端的程序之间可能有所不同:Bash (readline) 有自己的解释特殊键的代码,Vim 有自己的代码,Irssi 也有自己的代码。某些程序可能会将您的按键完全识别为 F10(因此忽略它)。
要在全局(操作系统范围内)制作F10实际的波浪号键,请搜索“键重新映射器”工具(可能是 AutoHotkey)。
要F10在所有基于终端的程序中制作波浪号键,请搜索终端的设置。(本例中的“终端”指的是 ConEmu。)
终端可能有自己的功能来重新定义单个键,或者可能创建“宏”。(ConEmu文档建议用print(…)动作定义一个宏。)
要F10在 Bash 中创建波浪号键(但仅限 Bash):
确保您的终端模拟器 (ConEmu) 没有将 F10 绑定到它自己的某些功能。(普通的 F10 通常不绑定任何东西——但是,Shift+F10 是打开“右键单击”菜单的标准键。)
在 bash 中,按CtrlV(literal insert)然后按 F10。您将看到类似^[[21~.
(首字母^[代表 ESC,其余的只是文字符号。)
如果在这一点上,关键不插入任何顺序可言,它已经接管了终端本身或其他程序的手段-回到步骤1。
~/.inputrc在文本编辑器中打开(或创建)文件。
添加这一行,从步骤 #2 中获取序列并替换^[为\e:
"\e[21~": "~"
Run Code Online (Sandbox Code Playgroud)
这告诉 inputrc~在接收时插入 a ESC [21~。
重新打开 Bash shell(或按CtrlX,CtrlR重新加载 inputrc)。