为什么 byobu 只能使用终端拆分成选项卡,而不能在控制台/tty 中执行相同操作?

为什么 byobu 只能使用终端拆分成选项卡,而不能在控制台/tty 中执行相同操作?

我使用 Byobu 有一段时间了,发现了一些奇怪的事情:当我使用终端仿真器时,我可以正常将 Byobu 拆分为选项卡,但是当我在控制台或 tty 中时,按Shift+F2只会输入波浪符号 ( ~),而Ctrl+F2没有任何效果。

这是技术限制吗?如果是,它是如何工作的?

答案1

这是一个很好的问题!

遗憾的是,实际的控制台终端电话在 Linux 中并不是终端,它能够捕获并支持更多的按键。

我一直怀疑 Linux TTY 可以被教导支持 Shift-F 键,尽管我从来没有尝试过。抱歉。

答案2

一些背景知识:

从历史上看,有很多“终端类型”(“终端”是键盘和文本显示器 - xterm 是终端类型,控制台也是),所有这些终端类型都有不同的键。如果你现在看看你的键盘,它可能在空格键的左边有一个“Windows 键”。Mac 没有这些,它们可能有一个“Apple 键”(如果你想看这个,请谷歌搜索)。有些键盘在大多数现代键盘的退格键处有一个“Del”键。在某些终端类型上(例如电传打字机 - 本质上它使用打印机作为屏幕),你无法“删除”一个字符。它有功能键吗?有多少个?哪个字符会使光标向后移动一个字符?“回车”字符是否移动到当前行的开头,还是下一行?屏幕的字符宽度是多少?你能“显示”文本颜色吗?你如何改变颜色?

为了使 Unix/Linux 在尽可能多的终端上尽可能地可用,有一些文件描述了每个终端的功能以及哪些键应执行哪些功能(例如,当您按下“Del”键时,它可能用作“Del”,也可能用作“Backspace”)。这些文件(在 Linux 中)可以在 /usr/sare/terminfo 中找到。实际使用哪个文件由环境变量“TERM”决定。如果您“echo $TERM”,您可以看到它认为您拥有的内容。

如果终端定义没有说明您有特定的密钥,那么程序就无法接收这些密钥。

xterm、gnome-terminal 使用“xterm”终端类型,它支持功能键之类的功能;控制台使用(默认)“linux”终端类型,它认为自己没有这些键。由于终端类型描述了如何表示按键已被按下(并告诉接收程序如何监听按键),因此 byobu 无法接收按键,因此无法对按键采取行动。

这就是“为什么”。现在来谈谈解决方案。据我所知,有 3 个(按“最方便到最不方便的顺序”):

  1. 设置不同的终端类型,与实际终端兼容,但功能更多。注意:这必须在运行 byobu 之前完成,而不是在里面完成。我的安装有超过 1,600 种终端类型,如果您将其设置为错误的类型,您可能无法键入、按回车键或类似操作。将其设置为其他类型并不一定能为您提供该功能 - 例如,如果您在控制台上,并将终端类型设置为“xterm”,则无法使用鼠标调整控制台大小,将其设置为“dec”也不会为您提供“setup”键。但是,大多数终端类型大致相同 - 'a' 仍将是 'a'。您可能会看到乱码,但通常不会。我发现“TERM=linux-vt”似乎工作得很好。我尝试的所有键都可以正常工作,除了 Alt-Function 键和 Alt-direction 键。请注意,Alt-Function 键和 Alt-direction 键由控制台直接处理,以在虚拟终端之间切换。

  2. 使用替代键组合。据我所知,所有无法从控制台访问的键绑定都有替代键绑定。例如,在默认安装中,Control-A 后跟 % 将执行水平分割,Control-A 后跟竖线(“|”)将执行垂直分割。Control-A 后跟问号将显示键绑定。我认为需要一段时间才能理解您正在阅读的内容,但最重要的是“-T”(root 表示它始终可用,prefix 表示您必须先按 Control-A。如果您将“bind-key -T root a”绑定到某个东西,您将无法再输入“a”!)。下一列(紧接着键表)是键。最后一列是它运行的内容。因此,如果它说“bind-key -T prefix % split-window -h”,那么如果您按下“前缀”(control-A)后跟“%”,它将分割窗口(水平)。

  3. 如果您知道 byobu 调用它的内容(以及有哪些选项),则可以从命令行运行这些内容(通常这只有在 byobu 内部才有意义)。方便的是,这是键绑定页面的最后一列。只需在它前面加上“byobu”即可从命令行执行此操作。例如,键绑定页面显示“bind-key -T prefix % split-window -h”,因此我可以通过直接从 byobu 内部运行以下命令(从 bash 或类似命令)来执行相同操作:“byobu split-window -h”。

相关内容