当我在 gnu 屏幕中时,我可以水平(或垂直)分割并在新窗口中启动终端会话地区。如果我从该屏幕分离然后Ctrl-a,d
恢复,现在我只能看到整个窗口中拆分的第二个区域。我知道第一个区域仍然存在于某个地方,因为如果我exit
在第二个区域中输入,那么第一个会话就会出现,我可以exit
再次输入以实际关闭屏幕会话。
如何恢复分割为多个区域的屏幕,并让我的分割同时全部可见?
重现此问题的简单方法:
$ screen -S splitresume
$ export PS1="region 1$ "
<Ctrl-a |>, <Ctrl-a TAB>, <Ctrl-a c>
$ export PS1="region 2$ "
<Ctrl-a d>
$ screen -r splitresume
至少在我的系统上,在screen -r splitresume
我只看到带有 的提示后region 2$
。正如我上面所说,如果我退出该终端会话,我现在可以看到带有 PS1 的终端regsion 1$
。我希望能够恢复并在一些可见空间中重新绘制区域。
编辑:我尝试使用该resize
命令,但屏幕的响应只是一个抱怨:resize: need more than one region
。
答案1
当我分割显示器然后分离时,屏幕忘记了分割。
(隐含的问题是,“如何将分割窗口保持在分离状态?”)
简而言之,答案是你不能。更长的答案是你可以伪造它。 (注:下一个屏幕版本,可能编号为 4.1.0,将能够记住显示布局。)
分割是显示器的一个属性。管理屏幕会话的进程并不真正了解它们;只有显示会话的单个进程才会这样做。因此,屏幕会话无法记住拆分,因为它不知道它们,并且一旦分离,确实知道它们的进程就退出了。
破解方法是使用嵌套屏幕会话。启动一个会话并为其提供一些您不会经常使用的转义序列(或者完全禁用其转义字符)。将您常用的分离键序列绑定到此屏幕会话。现在,启动或附加到您的主屏幕会话。您的所有工作都将在内部会话中完成,并且您可以拆分显示。但是,当您分离时,将分离外部会话,因此您在内部会话中的拆分将被保留。
假设您使用默认转义字符 Ca,您的备用 screenrc 应包含:
escape ""
bindkey ^ad detach