Answers:
您要问的是一个无限宽度的终端,其中一部分正在显示。这既不是终端传统上的工作方式,也不是应用程序期望它们如何工作。
例如,如果终端具有无限宽度,那么当视觉应用程序想要在屏幕中间显示某些内容时,它们应如何工作?
您可以使用GNU进行处理screen
(您应该能够从几个大小不同的终端上附加屏幕会话,以便屏幕知道如何显示较大终端的小窗口)并将screen
窗口宽度设置为某种很大,然后欺骗视觉应用程序,使他们认为屏幕宽度是原始宽度。
喜欢(内screen
)
c=$COLUMNS # assuming your shell has that variable
screen -X width -w 1000
stty cols "$c"
一些视觉应用程序可以很好地工作,而有些则不能很好(当它们进行相对定位或依赖终端包装时进行安装)。vim
似乎工作正常。
然后,要滚动和复制粘贴数据,唯一的选择是使用screen
的复制模式。(<prefix>]
)并在光标周围移动(info -f screen -n Movement
有关在复制模式下移动的信息,请参阅)。
tmux
可能具有类似的功能。
这个terminator
终端仿真器(基于Java)不是terminator
ubuntu附带的,它也可以使用无限的终端宽度来实现:
screen
上面的基于基础的解决方案更好,因为它的terminfo条目声称它不进行换行,因此应用程序意识到这一点,并且行首的BS不会移至上一行的末尾。screen -X width -w 1000
收益No screen session found.
,有什么想法吗?
screen
。首先开始screen
。
screen -X width -w 1000 <mycommand>
screen
是基于终端的终端仿真器。因此,您需要像运行命令一样先启动它,xterm
或者gnome-terminal
先运行该screen
命令。然后,在该新的终端仿真器中,运行该screen -X
命令告诉screen
更改其窗口宽度。另请参阅我对terminator
模拟器的修改后答案,我怀疑您会喜欢它。
虽然Emacs主要是编辑器和IDE¹,但它恰好可以很好地解决您的问题。您可以在Emacs窗口中运行程序,然后Emacs在无限宽度和高度的哑终端中显示该程序。如果光标在缓冲区的末尾,则窗口将在程序产生输出时滚动;否则,窗口将滚动。如果您移动光标,则窗口将随着输出的增长而保持不变。
键入M-x shell RET
(即Alt+ x shell
Return)以在Emacs缓冲区中启动shell。键入C-u M-x shell RET
或M-1 M-x shell RET
启动另一个Shell。您可以在每个外壳中运行一个程序,并根据需要在多个窗口中排列缓冲区。
¹ 有时据说它是一个比编辑器更好的OS,但是只有不使用它的人才知道–这只是个玩笑。
ls
和mcedit
可以在其中正常工作,因为屏幕宽度和缓冲区宽度是分开处理的。