当我恢复 的拆分会话时screen
,我只有一个打印会话,并且必须重新配置显示会话的数量。
还有其他方法可以保留原始screen
配置吗?
答案1
这不是现在无需破解即可实现(参见下一段);但是,执行此操作所需的功能已添加到 screen 的当前 git 树中。在未来的版本中,“布局保存”和“布局加载”命令不仅能够加载您最后的布局,还能够加载其他命名的布局。我相信也支持循环布局。
目前,诀窍是在屏幕内使用屏幕。所有的工作和布局更改都是在内部屏幕中完成的,但是当您分离时,您实际上是与最外层的屏幕分离。内部屏幕的布局将被保留。有关所有详细信息,请参阅以下内容:
或者,您可以尝试直接从屏幕源代码树编译最新版本。您可以通过安装 git 然后运行来完成此操作:
git clone git://git.savannah.gnu.org/screen.git
然后,按照 src/INSTALL 中的说明进行操作。一般来说,方向是:
./autogen.sh
./configure
make
安装文件中讨论了基于各种问题的有关屏幕安装位置的各种问题。如果您选择这条路线,最好的选择是阅读所有安装说明,然后继续。
答案2
油灰注意:如果您使用腻子,还请转到终端设置并检查以禁用终端的调整大小,保存设置,然后重新启动。
您有几个选项,具体取决于哪个选项对您的设置来说是合理的;
a) 如果您的版本超过 4.2,请使用 screen_layoutscreen -X dump layout
b) 如果你有 ~4.0x,请使用 hackhttp://aperiodic.net/screen/faq#when_i_split_the_display_and_then_detach_screen_forgets_the_split
这个黑客有点令人困惑,因为你必须仔细注意它不太清楚地指出你需要先启动一个标准屏幕,然后再启动带有 .screenrc 编辑的屏幕,因为会话不会保存这样的数据。
c) 编译并安装 http://savannah.gnu.org/forum/forum.php?forum_id=8293 http://www.linuxfromscratch.org/blfs/view/svn/general/screen.html
d) 应用补丁而不是重新安装(见下文)
e) 获取您的发行版的二进制文件,并将其放在您的路径中,以便它将覆盖系统默认的路径。
嗯,因为我知道只有一种选择是不够的。
关于上面的d),我找不到补丁了,所以我把它放在这里。
diff --git a/src/doc/screen.texinfo b/src/doc/screen.texinfo
index 6142de0..6fc8f9e 100644
--- a/src/doc/screen.texinfo
+++ b/src/doc/screen.texinfo
@@ -1040,6 +1040,8 @@ Show or set which layout to reattach to. @xref{Layout}.
Remember the organization of a layout. @xref{Layout}.
@item layout autosave [@var{on}|@var{off}]
Show or set the status of layout saving. @xref{Layout}.
+@item layout dump [filename]
+Save the layout arrangement to a file. @xref{Layout}.
@item license
Display licensing information. @xref{Startup}.
@item lockscreen
@@ -2107,7 +2109,10 @@ the layout to reattach to will be shown in the message line.
Remember the current arrangement of regions. When used, @code{screen}
will remember the arrangement of vertically and horizontally split
regions. This arrangement is restored when a @code{screen} session
-is reattached or switched back from a different layout. If a number
+is reattached or switched back from a different layout. If the
+session ends or the @code{screen} process dies, the layout
+arrangements are lost. The @code{layout dump} command should help
+in this siutation. If a number
or title is supplied, @code{screen} will remember the arrangement of
that particular layout. Without any options, @code{screen} will
remember the current layout.
@@ -2129,6 +2134,21 @@ a single window. Without either an @code{on} or an @code{off}, the
current status is displayed on the message line.
@end deffn
+@deffn Command layout @code{dump} [filename]
+(none)@*
+Write to a file the order of splits made in the current layout. This
+is useful to recreate the order of your regions used in your current
+layout. Only the current layout is recorded. While the order of the
+regions are recorded, the sizes of those regions and which windows
+correspond to which regions are not. If no filename is specified,
+the default is @file{layout-dump}, saved in the directory that the
+@code{screen} process was started in. If the file already exists,
+@code{layout dump} will append to that file. As an example:
+@example
+layout dump /home/user/.screenrc
+@end example
+will save or append the layout to the user's @file{.screenrc} file.
+@end deffn
@node Window Settings, Virtual Terminal, Regions, Top
@chapter Window Settings
答案3
当我不小心按下了错误的组合键时,我遇到了这个问题,并且我的所有分屏都消失了。 :((
然而,至少对我来说有一条(卑微的)出路。由于我主要screen
与xterm
和bash
shell 一起使用,所以我最不想拥有的是发射还有更多bash
es。 (通过ps
揭示bash
过程来控制事物是在那里,但无法访问。)
所以回到我通常的设置的方法是使用Ctrl+"并添加一个已经运行Ctrlshell 到每个分割窗口,使用+循环浏览“窗格” aTAB。所以我让事情恢复正常。
我发布此内容主要是因为我遇到过一些人,他们在沮丧中只是按下Ctrl+ac并“重新安装”了他们的bash
es。但这是愚蠢的!对于这种方法,一天结束时您可能会得到 25 个bash
进程,其中至少有 15 个进程无法访问/不可见,只是无缘无故地浪费资源和 CPU。所以重新使用他们,而不是重新创造他们。
答案4
分离之前:
[Ctrl]+[a]+[:] 然后输入layout dump .my_filename
现在您可以分离了。
重新连接后:
[Ctrl]+[a]+[:] 然后输入source .my_filename
来源:
https://linuxdigest.com/howto/gnu-screen-split-the-screen/ 和https://www.gnu.org/software/screen/manual/html_node/Layout.html