如何在 gnome-terminal 窗口中硬换行?

How can hard-wrap long lines in a gnome-terminal window?

提问人:Ed Rogers 提问时间:11/18/2023 更新时间:11/18/2023 访问量:13

问:

背景

我们有一个 9 行盲文显示器 (Canute 360),它完全模拟终端窗口的视觉输出。盲文显示器和 gnome-terminal 窗口都是 40 个字符宽和 9 行长,因此盲文显示器应该能够精确地模仿^1 可视终端窗口。

您不需要了解盲文显示器或 BRLTTY 来帮助解决此查询。我正在寻找 shell 中的解决方案,并将尝试尽可能地解释屏幕阅读器部分。

^1:(完全模仿使用一对一盲文转换表时。

问题

在 gnome-terminal 中,当一行超过 40 个字符时,将换行到下一行。BRLTTY不知道它已经包装好了,所以线条从显示器的边缘溢出,要么被切断,要么整个显示器平移。

此命令:

$ echo "12345678901234567890123456789012345678901234567890"

在 gnome-terminal 上呈现如下:

$ echo "12345678901234567890123456789012
345678901234567890"
1234567890123456789012345678901234567890
1234567890
$

但是像盲文显示器上这样:

$ echo "12345678901234567890123456789012
1234567890123456789012345678901234567890
$

显然,正如BRLTTY所看到的那样,包装线实际上是一条线。包装是展示性的。

预期的结果是什么?

一种实际硬包装这些行的方法,以便盲文输出如下所示:

$ echo "12345678901234567890123456789012
345678901234567890"
1234567890123456789012345678901234567890
1234567890
$

...无需编辑 BRLTTY。我正在寻找一种适用于BRLTTY当前预期行为的解决方案。

替代的、不太理想但可行的结果

停止将行换行在 gnome-terminal 中,因此可视化 gnome-terminal 如下所示:

$ echo "12345678901234567890123456789012
1234567890123456789012345678901234567890
$

对于我正在处理的应用程序,如果这是更简单的解决方案,我可以使用它。

我试过什么

屏幕或外壳中的外壳

我认为运行可能会起作用,因为 shell 中的 shell 会硬包装这些行,因此 BRLTTY 会将它们作为单独的行来读取,但这没有区别。screen

在一定程度上,将屏幕作为 shell 中的一个非常宽的 shell 运行确实有效,但某些应用程序不知道要换行 40 个字符。目前,像 、 、 这样的应用程序在盲文显示器和可视终端上都能正常工作。如果我们把它弄得很宽,那就会被打破。lessmicropicomc

我试图进入服务器,看看这是否会提供硬换行符,但它没有。ssh

但是,我想知道这种方法是否有腿,如果我更好地理解 shell 和终端如何协同工作。

水平滚动模式

我尝试更改,这会更改提示行,使其表现得像上面的替代,不太理想的方法。但是,它不会更改打印线条的显示方式。set horizontal-scroll-mode on/etc/inputrc

思潮

  • 我愿意尝试不同的 shell/终端模拟器。
shell 终端 gnome-terminal 盲文

评论

1赞 Arnaud Valmary 11/18/2023
你尝试使用命令吗?stty columns 40
0赞 shellter 11/18/2023
stty似乎是一个很好的起点。另请注意,大多数终端仿真器都为 env-vars 和 .这些可以帮助您管理界面。$LINES$COLUMNS
0赞 shellter 11/18/2023
您可能想明确说明“shell 中的 shell”的含义。放置一些您已执行的代码/命令,以便读者可以复制您的步骤。祝你好运。
0赞 shellter 11/21/2023
请注意,观察者很少。通过使用标签命名特定 shell,您将更多地关注您的问题。(? 或 ??).如果你能如上所述在 shell 示例代码中添加一些 shell,我会就你的问题发布赏金。祝你好运。gnome-terminalbash

答: 暂无答案