我是新手tmux
,我在寻找调整实际终端大小的解决方案时遇到了麻烦(我还没有充分了解窗格和窗口)。
我在 ubuntu12.04 上运行 tmux1.6,并将其bash
作为我的 shell。
bash
有一个内置函数resize
,它似乎可以在 tmux 之外正常工作。
% resize -s 50 80
将终端大小调整为 80 个字符宽和 50 行高。但是,当我尝试在 tmux 窗格中运行此命令时,它在我按下 Enter 后挂起,直到我按下任意键,然后才会响应
"resize: unknown character, exiting"
这对我来说有点晦涩难懂。现在,我不需要使用该resize
函数本身,但是我如何通过命令(内置或脚本)物理调整显示我的 tmux 窗口的终端的大小?这种情况的用例是,当我决定打开一个新的垂直窗格(两个窗格都包含代码)时,我希望我的终端宽度与字符数相等(例如,2 个窗格 = 161 个字符,每个窗格 80 个字符,分隔线 1 个字符)。使用鼠标调整大小不仅繁琐;调整大小时,我的 ubuntu 不会显示宽度。
任何帮助都值得感激,谢谢!
答案1
看起来 tmux 不允许转义字符通过。
我在 tmux 错误跟踪器上提交了一个错误报告 - 希望它可以被修复: http://sourceforge.net/p/tmux/tickets/88/
-- 编辑:添加了解决方法 --
似乎您可以强制 tmux 让特定的转义命令通过:您可以使用,printf '\033Ptmux;whatever\033'
但需要加倍\033
。
所以我编写了一个小的 bash 函数(将其放在你的 .bashrc 或 .bash_profile 中),测试你是否在 tmux 中并打印出转义代码(在 xterm、Apple Terminal 和 iTerm 中测试):
function resimux {
if [ ! -z "$TMUX" ]; then
printf '\ePtmux;\e\e[8;%i;%it\e\' $1 $2
else
printf '\e[8;%i;%it' $1 $2
fi
}
然后你可以像这样调用它:
resimux 50 80
调整大小的转义序列被发送到所有连接的终端。
瞧。