Answers:
现在从以下答案中获得本地支持:
在1.8版中,添加了-Z标志以调整大小窗格。从手册页:
使用-Z,活动窗格在缩放(占据整个窗口)和未缩放(在布局中的正常位置)之间切换。
另一种选择是使用,break-pane
然后使用join-pane
。从手册页:
break-pane [-d] [-t target-pane]
(alias: breakp)
Break target-pane off from its containing window to make it the
only pane in a new window. If -d is given, the new window does
not become the current window.
join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane]
(alias: joinp)
Like split-window, but instead of splitting dst-pane and creating
a new pane, split it and move src-pane into the space. This can
be used to reverse break-pane.
因此,您可以选择窗格并执行此操作break-pane
,然后在完成最大化版本后,可以将其重新加入join-pane
-可能需要一些默认参数才能将其放回原位,或者仅在之后进行重新排列。
请注意,连接窗格似乎在tmux 1.3中,而不在1.1中。(不确定1.2,抱歉)。
只需提一下终结器(GUI(基于GTK)终端多路复用器)就可以完成缩放任务。(Ctrl-Shift-X是默认的键盘绑定)。当然,它并没有做很多tmux做的事情...
join-pane -t:{previous}
对于上一个窗口或join-pane -t:0
将其重新加入窗口
现在,这是本机tmux功能。
在1.8版中,该-Z
标志增加了resize-pane
。从手册页:
使用-Z,活动窗格在缩放(占据整个窗口)和未缩放(在布局中的正常位置)之间切换。
默认情况下,它绑定到tmux-prefix- z在我的安装上(通过OS X上的Homebrew)。
因此,我知道您前一阵子问过这个问题,但是直到今天我才从屏幕上退出!
我遇到了同样的问题,这是我的解决方法:
unbind +
bind + new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \; swap-pane -s tmux-zoom.0 \; select-window -t tmux-zoom
unbind -
bind - last-window \; swap-pane -s tmux-zoom.0 \; kill-window -t tmux-zoom
如果您的工作流程像我的(例如,您最大化一个窗口,做一些工作,然后立即取消最大化),那么这对您将非常有用。
bind c-m select-window -t tmux-zoom ? <minimize> : <maximize>
。但是现在我想在其他地方定义此功能,以保持整洁,并且公正bind c-m :max_or_min
。那可能吗?我发现很难搜索。(我发现我经常会打错命令,并最终创建其他空的“ tmux-zoom”窗口。)
改进的变焦器。现在,可以缩放多个窗格,甚至可以缩放。完成以下操作并重新加载tmux服务器(在我的情况下为Ctrl-r)后,您将必须具有x放大和缩小窗格的键。放大是通过在新窗口中打开窗格来实现的,而缩小是通过使窗格回到其原始窗口来实现的。如果最终分割了放大窗口,则可以放大到放大窗口的窗格,然后缩小回到放大窗口。仅当您在包含单个窗格的放大窗口中时,才会发生缩小。
在您的末尾添加以下内容 ~/.tmux.conf
~$ grep "bind x" ~/.tmux.conf
unbind x
bind x run ". ~/.tmux/zoom"
添加以下文件
~$ cat ~/.tmux/zoom
#!/bin/bash -f
currentwindow=`tmux list-window | tr '\t' ' ' | sed -n -e '/(active)/s/^[^:]*: *\([^ ]*\) .*/\1/gp'`;
currentpane=`tmux list-panes | sed -n -e '/(active)/s/^\([^:]*\):.*/\1/gp'`;
panecount=`tmux list-panes | wc | sed -e 's/^ *//g' -e 's/ .*$//g'`;
inzoom=`echo $currentwindow | sed -n -e '/^zoom/p'`;
if [ $panecount -ne 1 ]; then
inzoom="";
fi
if [ $inzoom ]; then
lastpane=`echo $currentwindow | rev | cut -f 1 -d '@' | rev`;
lastwindow=`echo $currentwindow | cut -f 2- -d '@' | rev | cut -f 2- -d '@' | rev`;
tmux select-window -t $lastwindow;
tmux select-pane -t $lastpane;
tmux swap-pane -s $currentwindow;
tmux kill-window -t $currentwindow;
else
newwindowname=zoom@$currentwindow@$currentpane;
tmux new-window -d -n $newwindowname;
tmux swap-pane -s $newwindowname;
tmux select-window -t $newwindowname;
fi
我这样做是为了通过相同的按键来最大化/最小化:
bind C-k run "if [[ $(tmux list-window) =~ ZOOM ]]; then tmux last-window; tmux swap-pane -s ZOOM.1; tmux kill-window -t ZOOM; else tmux new-window -d -n ZOOM; tmux swap-pane -s ZOOM.1; tmux select-window -t ZOOM;fi"
resize-pane -Z
切换的问题在于,有时它会执行超出期望的反向缩放操作,尤其是从脚本或内部调用时tmux.conf
。
解决方法如下:
tmux-zoom-in.sh
#!/bin/bash
# Zoom in the current pane ONLY if it is not currently zoomed.
# Requires tmux version >= 1.8
tmux list-panes -F '#F' | grep -q Z || tmux resize-pane -Z
tmux-zoom-out.sh
#!/bin/bash
# Zoom out the current pane ONLY if it is not currently zoomed.
# Requires tmux version >= 1.8
tmux list-panes -F '#F' | grep -q Z && tmux resize-pane -Z
对于那些无法使用tmux 1.8或更喜欢更长的最大化状态的用户,我发布了一个可与tmux 1.6+一起使用的tmux脚本。
希望能有所帮助。
对于旧版本的tmux,此解决方案是我发现的唯一可行的解决方案: