繁体   English   中英

将较小的显示器切换到较大的显示器时,有什么方法可以重绘 tmux window?

[英]Is there any way to redraw tmux window when switching smaller monitor to bigger one?

我在一个较小的终端上启动了一个 tmux session。 当我在更大分辨率的显示器上“附加”到相同的 session 时,它会在控制台周围绘制点。 它不适合新的 window 尺寸。 有什么方法可以重绘和清理 window? CTRL + LCTRL - B + R没有帮助。

tmux将窗口的尺寸限制为窗口附加到的所有会话中每个尺寸中的最小尺寸。 如果它不这样做,就没有明智的方法来显示所有附加客户端的整个窗口区域。

最简单的方法是在附加时从会话中分离任何其他客户端:

tmux attach -d

或者,您可以在附加到会话之前将任何其他客户端移动到不同的会话:

takeover() {
    # create a temporary session that displays the "how to go back" message
    tmp='takeover temp session'
    if ! tmux has-session -t "$tmp"; then
        tmux new-session -d -s "$tmp"
        tmux set-option -t "$tmp" set-remain-on-exit on
        tmux new-window -kt "$tmp":0 \
            'echo "Use Prefix + L (i.e. ^B L) to return to session."'
    fi

    # switch any clients attached to the target session to the temp session
    session="$1"
    for client in $(tmux list-clients -t "$session" | cut -f 1 -d :); do
        tmux switch-client -c "$client" -t "$tmp"
    done

    # attach to the target session
    tmux attach -t "$session"
}
takeover 'original session' # or the session number if you do not name sessions

如果较小的客户端切换到会话,屏幕将再次缩小。

还有一种变体,您只“接管”窗口(将窗口链接到一个新会话,设置aggressive-resize ,并将该窗口处于活动状态的任何其他会话切换到其他某个窗口),但脚本更难在一般情况下(与“退出”不同,因为您希望取消链接窗口或终止会话,而不仅仅是从会话中分离)。

您始终可以按CTRL - B + SHIFT - D来选择要从会话中分离的客户端。

tmux 将列出所有会话及其当前维度。 然后,您只需从所有较小规模的会话中分离出来。

关于最近版本的 tmux(在 1.9 上测试)的更简单的解决方案,您现在可以执行以下操作:

tmux detach -a

-a用于此会话中除当前客户端之外的所有其他客户端

你可以在你的 .[bash|zsh]rc 中给它别名

alias takeover="tmux detach -a"

工作流程:您可以正常连接到您的会话,如果您被另一个强制降低 tmux 窗口大小的会话所困扰,您可以简单地调用takeover

这仍然是搜索时的顶级帖子,但它不再有效。 最佳答案在这里,但 TLDR 是

<cb>:resize-window -A

其他答案对我没有帮助,因为我只连接了客户端(启动会话的前一个已经分离)。

为了解决这个问题,我遵循了这里的答案(我没有使用 xterm)。

其中简单地说:

  1. 从 tmux 会话中分离
  2. 运行resize linux 命令
  3. 重新附加到 tmux 会话

我刚刚遇到了这个问题,并偶然发现了一个不同的情况。 虽然它可能只是一只独角兽,但我想我会把它摆出来。

我有一个较小的会话,我注意到字体大小不同:较小的会话具有较小的字体。 显然,我出于某种原因更改了窗口字体大小。

所以在 OS X 中,我只是在较小的会话中执行了Cmd-+ ,然后它又Cmd-+回了原位。

我使用Ctrl - b + q这使它为每个窗格闪烁编号,并在途中重新绘制它们。

ps ax | grep tmux
17685 pts/22   S+     0:00 tmux a -t 13g2
17920 pts/11   S+     0:00 tmux a -t 13g2
18065 pts/19   S+     0:00 grep tmux

杀死另一个。

您可以使用<Ctrl-B> : + at -d <CR>重绘 tmux 窗口。

由于使用 iTerm 的 tmux 集成(即tmux -CC a ),我遇到了同样的问题。 其他答案中提到的所有分离选项都不适合我,因为没有“其他会话”可以分离。

我的理解是 iTerm 的 tmux 客户端似乎在附加会话上硬设置窗口大小,因此后续附加似乎尊重先前调整大小的窗口大小。 唉,我最终通过tmux -CC a将 iTerm 客户端重新附加到 tmux 并在 GUI 中手动调整为全窗口大小(在这里使用鼠标不高兴,但不幸的是,这最终奏效了)。 从 iTerm 中完全分离,随后的附件遵循 iTerm 中设置的大小。

可能是一个奇怪的边缘情况,但对我来说,唯一解决它的是不最大化 window 然后再次最大化它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM