![我想在 bash 中输入波浪符号,但按 F10 键会出现“1~”而不是“~”](https://linux22.com/image/1570743/%E6%88%91%E6%83%B3%E5%9C%A8%20bash%20%E4%B8%AD%E8%BE%93%E5%85%A5%E6%B3%A2%E6%B5%AA%E7%AC%A6%E5%8F%B7%EF%BC%8C%E4%BD%86%E6%8C%89%20F10%20%E9%94%AE%E4%BC%9A%E5%87%BA%E7%8E%B0%E2%80%9C1~%E2%80%9D%E8%80%8C%E4%B8%8D%E6%98%AF%E2%80%9C~%E2%80%9D.png)
以前,我可以通过按 在我的 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 解决了这个问题,因为它里面没有任何有用的东西。