当我调整包含 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
我不太熟悉终端术语,但我通过执行以下步骤设法摆脱了这个错误:
Ctrl按+离开会话b d(不用担心,您可以完好无损地返回会话)
检查您的控制台应用程序是否正在运行
xterm
。如果echo $TERM
返回xterm
,那么此过程可能适合您。输入
resize
您的终端。通过重新调用返回到您的会话
tmux
。正如您所看到的,所有会话都在运行,就像您从未离开过 tmux 一样。
Tmux 将其终端大小与您的xterm
“大小”变量链接起来。如果您碰巧将其$TERM
设置为screen
,那么我无法帮助您,因为我不知道该 TERM 会话的命令是什么。