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
.请注意,某些键会被窗口管理器或终端仿真器捕获。所以他们永远不会进入showkey
或readline
。