在 tmux 中调整终端大小似乎不起作用

在 tmux 中调整终端大小似乎不起作用

我是新手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

调整大小的转义序列被发送到所有连接的终端。

瞧。

相关内容