我想在 bash 中输入波浪符号,但按 F10 键会出现“1~”而不是“~”

我想在 bash 中输入波浪符号,但按 F10 键会出现“1~”而不是“~”

以前,我可以通过按 在我的 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):

  1. 确保您的终端仿真器 (ConEmu) 没有将 F10 绑定到其自身的某些功能。(普通的 F10 通常不绑定任何内容 - 但是,Shift+F10 是打开“右键单击”菜单的标准键。)

  2. 在 bash 中,按CtrlV(文字插入)并然后 F10. 您将看到类似这样的序列^[[21~

    (首字母^[代表 ESC,其余均为文字符号。)

    如果此时密钥没有插入任何序列根本,这意味着它已被终端本身或另一个程序接管——返回步骤1。

  3. ~/.inputrc在文本编辑器中打开(或创建)该文件。

  4. 添加此行,采用步骤 #2 中的序列并替换^[\e

    "\e[21~": "~"
    

    ~这告诉 inputrc在接收到时插入一个ESC [21~

  5. 重新打开 Bash shell(或按CtrlX,CtrlR重新加载 inputrc)。

答案2

您使用什么键盘布局?

标准美式键盘~上方有一个专用的波浪号键。Tab

在此处输入图片描述

答案3

我通过删除 ~.inputrc 解决了这个问题,因为它里面没有任何有用的东西。

相关内容