GNU Screen:结合分区域和全屏会话

GNU Screen:结合分区域和全屏会话

假设我有三个会话:0、1 和 2

我在会话 0 上,然后按 CTRL-A S 来分割屏幕。然后我选择会话 1 作为底部分割区域,而会话 0 位于上方。

我可以切换到会话 2 并让其全屏显示,同时保持 0 和 1 的分割吗?如果我按 CTRL-A n 切换到分屏中的其他会话,它只会更改分割区域。但我希望某些会话全屏显示。

那可能吗?

答案1

终端分为疼痛和视窗(不是会话)显示在每个窗格中。screen您无法在拆分和拆分之间快速切换。您可能可以设置一些宏来推动必要的操作。

tmux也许可以为您做到这一点,但我从未花太多时间在这上面。

答案2

GNU Screen 在单个屏幕的组织“之上”进行拆分。所以,不是。

-m但是,您可以嵌套屏幕会话。这是使用和选项的原因之一-e。您可以按任意方向(甚至双向)嵌套,但热键的使用可能会很棘手。

答案3

在 Ubuntu 20.04 上使用 GNU Screen 版本4.08.00 (GNU) 05-Feb-20,我可以使用以下命令获得 OP 所需的行为。您可以将其添加到您的~/.screenrc(可能需要进行一些调整;我不这样使用它)或将其保存在某个地方,然后通过调用屏幕来使用它,如下所示:

screen -c /path/to/file -S session_name

# -----------------------------------------------------------------------------
# Loads a multi-pane layout with easy access to terminal + vim editor w/bottom terminal
#
# 0 - Bash prompt
# 1 - Vim (focused)
# 2 - Bash prompt
# -----------------------------------------------------------------------------

# Create new layout with bash prompt
layout new shell
layout title shells
layout select shell
screen -t shell bash

# Create new layout with vim + bottom terminal
layout new editor
layout title editor
layout select editor
# Open vim in
screen -t vim bash -c 'vim; bash'

focus

# Horizontal split
split

# Move to bottom split
focus down

# Create bash shell in bottom split
select 1
screen -t term bash

# Give vim bash shell a little less vertical space
resize -v -15

# Move focus back up to vim
focus up

关键在于使用布局。你可以点击此处了解更多信息,但其要点是使用布局来包含窗口集合,然后根据所需的行为类型在布局和窗口之间切换。在这种情况下,我添加了以下内容.screenrc以简化布局切换:

# Creates a default layout of 0, which makes the user's sessions start
# numbering at 1, which makes for easier switching
# (it also saves your layout to 'default' by default)
layout save default

# Create new layout with shell prompt when creating a new window
bind c eval 'layout new' screen

# Switch between layouts with Alt+Number
bindkey "^[0" layout select 0
bindkey "^[1" layout select 1
bindkey "^[2" layout select 2
bindkey "^[3" layout select 3
bindkey "^[4" layout select 4
bindkey "^[5" layout select 5
bindkey "^[6" layout select 6
bindkey "^[7" layout select 7
bindkey "^[8" layout select 8
bindkey "^[9" layout select 9

# Switch to previous layout
bind , layout prev

# Switch to next layout
bind . layout next

# Show all layouts
bind s layout show

注意:以上所有内容都是经过数小时的研究、查看博客文章等拼凑而成的,因此除了设法整理出一个对我有用的解决方案之外,我不要求任何其他的荣誉:)

相关内容