tmux 不随终端窗口调整大小

tmux 不随终端窗口调整大小

当我调整包含 tmux 会话的终端窗口大小时,tmux 不会检测到此更改,但会继续在旧窗口边界内正常运行。 tmux ls在我附加之前显示没有其他附加客户端:

$ tmux ls
admin: 1 windows (created Mon Apr 27 15:12:58 2015) [272x75]
apt-runs: 3 windows (created Mon Apr 27 15:17:50 2015) [272x75]
lal-dev: 4 windows (created Tue Jun  9 12:24:25 2015) [238x73]

这种情况仅发生在特定主机(运行 tmux 1.9a)上,分离/重新连接可修复该问题(直到再次调整窗口大小)。可能是什么原因造成的?

调整大小之前: 前

调整大小后: 在此输入图像描述

答案1

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

tmux attach -d

或短

tmux a -d

或者,您可以在附加到会话之前将任何其他客户端移动到不同的会话:https://stackoverflow.com/a/7819465/1069083

答案2

当 tmux 的window-size选项设置为时,可能会发生这种情况manual。要取消设置该选项,您可以按 Ctrl+B 并键入

:set-option -u window-size

window-size是每个窗口的选项,因此您必须针对会话中每个尺寸错误的窗口运行。

来自 tmux 的手册页:

窗口大小 largest| smallest| manual| latest:配置 tmux 如何确定窗口大小。如果设置为largest,则使用最大附加会话的大小;如果smallest,则最小的尺寸。如果manual,则新窗口的大小设置为默认大小选项和窗口会自动调整大小。对于latest,使用具有最近活动的客户端的大小。另请参阅调整窗口大小命令和积极调整大小选项。

默认值是latest从 tmux 3.2(2020 年 2 月 3 日发布)开始的,或者smallest在早期版本中latest不存在。然而值得注意的是,将 iTerm2 与 tmux 结合使用控制方式manual会在不询问您的情况下将其设置为,即使在分离 iTerm2 并以非控制模式连接到不同的客户端后,该设置也将保留。支持控制模式的其他终端仿真器可能具有相同的行为方式,但我只测试了 iTerm2。

答案3

我不太熟悉终端术语,但我通过执行以下步骤设法摆脱了这个错误:

  1. Ctrl按+离开会话b d(不用担心,您可以完好无损地返回会话)

  2. 检查您的控制台应用程序是否正在运行xterm。如果echo $TERM返回xterm,那么此过程可能适合您。

  3. 输入resize您的终端。

  4. 通过重新调用返回到您的会话tmux。正如您所看到的,所有会话都在运行,就像您从未离开过 tmux 一样。

Tmux 将其终端大小与您的xterm“大小”变量链接起来。如果您碰巧将其$TERM设置为screen,那么我无法帮助您,因为我不知道该 TERM 会话的命令是什么。

相关内容