假设你需要通过ssh与Terminal.app连接到远程服务器,并且当你用更大分辨率的显示器和已经启动的tmux连接时,它会在控制台周围画点,可以看出来它不符合新窗口的尺寸。 有什么办法重新绘制和清理窗口吗?我尝试了CTRL + L或CTRL-B + R命令,但是这两者都没有起到任何作用。
% tmux -V
tmux 1.5
发布于 2018-02-24 12:15:31
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
如果是由较小的客户端切换到会话,屏幕将再次缩小。
还有一种变化是你只能“take over”窗口(将窗口链接到一个新的会话中,设置aggressive-rersize
,并将其他窗口活动的会话切换到其它窗口),但是在一般情况下,编写脚本会变得更困难(两者的“exit”都不同,当你想要退出该会话的时候你可以取消窗口链接或者关闭会话而不仅仅是脱离会话)。
发布于 2018-02-24 13:30:27
可以通过CTRL-B + SHIFT-D分离来自于会话中的客户端。
tmux将列出所有会话的当前维度,然后你只需将它从所有较小的会话中分离出来。
发布于 2018-02-24 14:44:15
在最近的tmux版本上有一个更简单的解决方案(测试版本为1.9):
tmux detach -a
-a
为该会话中的所有其他客户端设置,但当前客户端除外。
你可以在.[bash|zsh]rc设置alias:
alias takeover="tmux detach -a"
Workflow:你可以正常连接到会话中,并且如果你被另一个强制缩小tmux窗口大小的会话干扰的话,可以通过使用takeover
来解决这个问题。
https://stackoverflow.com/questions/-100007423
复制相似问题