分离/重新连接GNU屏幕后如何保持窗口拆分


35

我在Ubuntu服务器中使用屏幕。

我将屏幕分为四个区域,每个区域显示一个不同的窗口。

问题是当我分离(或重新连接)一个时要获得四个窗口,但只有一个区域,我必须重新做C-a S一遍吗?

重新连接时如何保持屏幕拆分?

Answers:


15

屏幕常见问题解答

(隐含的问题是:“如何将拆分后的窗口保持在分离窗口上方?”)

简而言之,答案是你做不到。更长的答案是您可以伪造它。

拆分是显示的属性。管理屏幕会话的过程并不真正了解它们。仅显示会话的单个进程可以。因此,屏幕会话无法记住拆分,因为它不知道拆分,并且一旦分离,就知道拆分的过程已经退出。

黑客是使用嵌套屏幕会话。开始一个会话,并为它提供一些您不需要太多使用的转义序列(或者只是完全禁用其转义字符)。将您通常的分离键序列绑定到此屏幕会话。现在,开始或附加到主屏幕会话。您的所有工作都将在内部会话中完成,您可以拆分显示。但是,分离时,将分离外部会话,因此将保留内部会话中的拆分。

假设您使用默认的转义字符Ca,则备用的screenrc应该包含:

escape ""
bindkey ^ad detach

1
我花了一年或两年的时间来配置和大量使用嵌套屏幕会话,因此建议您这样做。随着时间的流逝,增加复杂性的痛苦减小,而更灵活的设置的有用性增加。
funroll

13
新功能(即layout)使该答案无效!
卡迪尔

superuser.com/a/516822/113250为“新”内置的布局特征
蒂亚戈菲戈罗

67

我发现,如果您已经设置了一些窗口,并且想要保存它们,则可以执行以下操作:

Ctrl-a
:
layout save default

然后,当您分离并重新连接到会话时,应还原布局。

适用于屏幕版本4.00.03jw4(FAU)2006年5月2日(Ubuntu 12.04和12.10)

另外,您可能想要创建一个守护进程会话,如下所示:

$> screen -dmSU mysession

然后通过调用以下命令使其始终可用:

$> screen -r mysession

5
更好的解决方案。这应该是公认的答案。(我知道为什么我总是向下滚动XD)
BrainStone 2015年

1
不幸的是,看起来redhat screen 4.00.03 (FAU) 23-Oct-06上的当前版本没有此功能。但是应该!
David Dombrowsky

这是一个更好的答案,但下面还有一个更好的答案,它每次使用都会自动保存布局.screenrc。支持答案
Mark Lakata

14

在git版本中,layout引入了新功能。

从屏幕(1):

布局新的[标题]

创建一个新的布局。屏幕将变为整个区域,并切换到空白窗口。在这里,您可以根据需要构建区域和显示的窗口。新布局将以最小的可用整数编号,从零开始。您可以选择为新布局命名。否则,它将具有默认标题“ layout”。您以后总是可以使用命令布局标题来更改标题。

即使您断开了屏幕会话,布局也记住了区域的分割方式。

例如,屏幕从以下配置开始。

layout new
split
split -v
screen 0
focus next
screen 1
focus bottom
screen 2
detach

并重新附加此会话,您将可以回到具有3个分割区域的(最后选择)布局。


任何人都知道要获得此文件需要提交什么文件(我很讨厌应用补丁,但是我永远不会运行主干代码(具有业


6

看来tmux确实如此。这是一个新的多路复用器项目,受屏幕启发,但从头开始并在BSD许可下进行编码。

(对不起,如果我的英语不太舒服:-°)


-1

我最近看过整个屏幕,而如果屏幕本身无法自动记住,则没有通用的方法可以做到这一点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.