我正在运行 garuda/sway 发行版,按下时在 alacritty 0.10.1 终端中得到以下输出:
Ctrl + 向上箭头 => [1;5A]
Ctrl + 向下箭头 => [1;5B]
另一个奇怪的小细节是,它似乎在粘贴值后将光标移回了一个位置......所以按下:
Ctrl + UP 然后 Ctrl + DOWN => [1;5A[1;5B]]
配置中只有一些颜色变化。我安装了另一个终端作为测试(st),但在那里看不到同样的东西。
有人认识这些代码或对这些代码的来源有任何想法吗?...或者也许是找出问题的一般过程?任何人都可以确认他们是否得到同样的东西运行敏捷?
更新:对于发现此问题的任何人,请参阅下面接受的答案和评论,但 TLDR 是我认为这更具体地说是鱼壳问题。我不明白 bash 和 alacritty 的问题。我确实看到它与鱼和圣。
这些是终端中 Ctrl+Up 和 Ctrl+Down 的实际代码。它们出现是因为您将它们发送到无法识别它们的程序。
(更准确地说,Ctrl+Up
ESC
[
1
;
5
A
在大多数终端中,尽管它可能ESC
O
A
在某些模式下或在某些终端(如 rxvt)中。)行编辑和光标移动不是由您的终端实现的——它们是由 shell 或终端中当前处于活动状态的任何其他程序实现的。(例如,Bash 使用自己的名为“readline”的行编辑库,Zsh 有自己的。)每当您按下光标键时,Bash 都会收到这种键序列,计算出新的光标位置,然后打印另一个序列询问终端实际将光标移动到那里。
通常,只有交互式 shell 或全屏程序(如文本编辑器)应该识别特殊键,但从标准输入读取的其他程序通常不会,所以例如,如果你运行
cat
它,它不会识别箭头键是完全正常的全部。但是,如果诸如 Bash 之类的程序无法识别它们,那么您的系统可能缺少终端的terminfo数据库(它让程序知道哪些代码对应于哪些键)。例如,Alacritty 将 $TERM 设置为 value
alacritty
,因此 Bash 将尝试读取/usr/share/terminfo/a/alacritty
键定义——这个文件应该与 'ncurses' 包一起提供。因此,请确保安装了 alacritty 的 terminfo 定义(特别是如果您正在通过 SSH 连接到远程系统),或者可以选择尝试将其配置为导出,
xterm-256color
而不是像这里讨论的那样。