以前,我可以通过按 在我的 bash 终端中输出波浪符号F10。现在,当我按 时,F10我得到两个字符:。/ /1~
也是如此。奇怪的是,其他功能键-给我一个波浪符号,但我想成为我的波浪符号键。F9F11F12F1F8F10
任何想法如何解决这一问题?
答案1
这些键都不是波浪键。它们都生成多个字符序列,例如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(文字插入)并然后 F10. 您将看到类似这样的序列
^[[21~
。(首字母
^[
代表 ESC,其余均为文字符号。)如果此时密钥没有插入任何序列根本,这意味着它已被终端本身或另一个程序接管——返回步骤1。
~/.inputrc
在文本编辑器中打开(或创建)该文件。添加此行,采用步骤 #2 中的序列并替换
^[
为\e
:"\e[21~": "~"
~
这告诉 inputrc在接收到时插入一个ESC [21~
。重新打开 Bash shell(或按CtrlX,CtrlR重新加载 inputrc)。
答案2
答案3
我通过删除 ~.inputrc 解决了这个问题,因为它里面没有任何有用的东西。