终端中的水平滚动

src*_*der 16 terminal

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

我需要它来处理所有事情,每个命令等等。问题是我需要运行很多控制台窗口,即使有多个显示器仍然需要缩小它们。因此,几乎每个输出都被换行和难以阅读的屠宰。

一种建议的解决方案是echo -ne '\e[?7l',它在某种程度上起作用。现在的问题是,有没有办法在控制台上获得滚动条?

Ubuntu 12.10,终端

Sté*_*las 11

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

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

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

喜欢(内screen

c=$COLUMNS # assuming your shell has that variable
screen -X width -w 1000
stty cols "$c"
Run Code Online (Sandbox Code Playgroud)

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

然后滚动和复制粘贴数据,唯一的选择是使用screen复制模式。( <prefix>]) 并围绕光标移动(请参阅info -f screen -n Movement有关在复制模式下移动的信息)。

tmux 可能有类似的能力。

这个terminator终端模拟器(基于 java),不是terminatorubuntu 自带的,也有无限的终端宽度:

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

  • @src蜘蛛。不。`screen` 是一个基于终端的终端模拟器。所以你需要先启动它,就像你需要先启动 `xterm` 或 `gnome-terminal`,通过运行 `screen` 命令。然后,在那个新的终端模拟器中,你运行 `screen -X` 命令来告诉 `screen` 改变它的窗口宽度。另请参阅我为“终结者”模拟器编辑的答案,我怀疑您会更喜欢它。 (2认同)

Gil*_*il' 8

虽然 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 中运行一个程序,并根据需要在多个窗口中排列缓冲区。

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