终端中的水平滚动

终端中的水平滚动

所以我相信已经有两个问题了。所有这些都与相关tail -f,因此人们给出了“少用”的切线答案。

我需要它来执行所有操作、每个命令等。问题是我需要运行大量控制台窗口,即使有多个监视器,仍然需要缩小它们。因此,几乎每个输出都被换行所破坏,并且难以阅读。

一种建议的解决方案是echo -ne '\e[?7l',它在某种程度上有效。现在的问题是,有什么办法让控制台上有滚动条吗?

Ubuntu 12.10,终端

答案1

您要求的是一个无限宽度的终端,其中的一部分正在显示。这不是终端传统的工作方式,也不是应用程序期望它们的工作方式。

例如,如果终端具有无限宽度,那么当视觉应用程序想要在屏幕中间显示某些内容时,它们如何工作?

不过,您可以做的事情是使用 GNU screen(您应该能够从多个不同大小的终端附加屏幕会话,以便屏幕知道如何显示较大终端的小窗口)并将screen窗口宽度设置为某个值非常大,然后欺骗视觉应用程序认为屏幕宽度是原始宽度。

喜欢(内screen

c=$COLUMNS # assuming your shell has that variable
screen -X width -w 1000
stty cols "$c"

有些视觉应用程序可以正常工作,有些则不太好(当它们进行相对定位或依赖终端包装时安装)。vim似乎工作正常。

然后要滚动并复制粘贴数据,唯一的选择是使用screen's复制模式。 ( <prefix>]) 并在光标周围移动(请参阅info -f screen -n Movement复制模式)。

tmux可能具有类似的能力。

terminator终端仿真器(基于java),这不是terminatorUbuntu 自带的也可以用无限的终端宽度来做到这一点:

  • 线条永远不会换行
  • 视觉应用程序被告知屏幕宽度是适合窗口的宽度,而不是无穷大。
  • 它也比上面的基于解决方案工作得更好,screen因为它的 terminfo 条目声称它不进行换行,因此应用程序知道这一点,并且行开头的 BS 不会移动到上一行的末尾。

答案2

虽然 Emacs 主要是一个编辑器和 IDE,但它恰好非常适合您的问题。您可以在 Emacs 窗口内运行程序,Emacs 将其显示在无限宽度和高度的哑终端中。如果光标位于缓冲区末尾,则窗口将在程序产生输出时滚动;如果您移动光标,窗口将随着输出的增长而保持不变。

键入M-x shell RET(即Alt+ x shell Return)以在 Emacs 缓冲区中启动 shell。键入C-u M-x shell RETM-1 M-x shell RET启动另一个 shell。您可以在每个 shell 中运行一个程序,并根据需要在多个窗口中排列缓冲区。

¹有时有人说它是比编辑器更好的操作系统,但只有那些不使用它的人才会说——这只是一个笑话。

相关内容