如何读取 readline 键绑定

如何读取 readline 键绑定

bind -P给我回一些东西,比如

bracketed-paste-begin can be found on "\e[200~".
revert-line can be found on "\e\C-r", "\er".
previous-history can be found on "\C-p", "\eOA", "\e[A".

我如何阅读这些内容?有没有完整的描述?

答案1

虽然 readline 接受多种输入格式来指定 readline(3) 和 bash(1) 中记录的按键序列,但输出格式更简单(根据我的观察):

  • \e是 Escape(在下一个字符之前按顺序按下)
  • \C-是 Control(与以下字符同时按下)
  • \\是一个反斜杠
  • \"是双引号
  • \nnn(其中 nnn 是 3 位数字)是八进制中的一个字节
  • 其他一切都是角色本身

除了按顺序按下之外,\ea还可以按住 readline(3) 所谓的 Meta 键并键入a。其他字母也类似。由于大多数现代键盘没有 Meta 键,因此这主要可以被认为是历史命名。在 PC 键盘上,使用 Alt 键。

较长的转义序列(如\eOQ或 )\e[15~不适合手动输入,而是由键盘上的特殊键产生。所提到的例子是目前我机器上的 F2 和 F5。

问题中显示的序列\e[200~不是由任何功能键直接产生的。当用户粘贴文本而不是键入文本时,终端模拟器可以插入它。 (此功能由 readline 变量控制enable-bracketed-paste

因为(特别是在 20 世纪 70 年代和 20 世纪 80 年代)不同的键盘类型会产生不同的转义序列,所以 readline 将许多命令绑定到多个序列。不要指望所有这些序列都是由您的键盘产生的。

要查看键盘和终端仿真器产生的结果,您可以使用showkey -a.请注意,某些键会被窗口管理器或终端仿真器捕获。所以他们永远不会进入showkeyreadline

相关内容