Tmuxでペインを最大化してから以前のサイズに復元すると非常に便利な場合があります。
私はマニュアルを読んでいます、そして私は方法を見つけることができません。私が思いついたのは、ペインを "最大"幅にリサイズするためのキーと、それをあらかじめ定義された幅に戻すための別のキーをバインドできるということです。
もちろんこれには欠点があるので、誰かがもっと良い考えを持っているかどうか私は思っています。
回答の下 からネイティブにサポートされるようになりました:
バージョン1.8では、サイズ変更ペインに-Zフラグが追加されました。 manページから:
-Zを使用すると、アクティブペインはズーム(ウィンドウ全体を占める)とズーム解除(レイアウト内の通常の位置)の間で切り替わります。
別のオプションは、break-pane
の後にjoin-pane
を続けることです。 manページ から:
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
で再結合できます。その後再配置します。
Join-paneはtmux 1.3にあるように見えますが、1.1ではないことに注意してください。 (1.2についてはわかりませんが、申し訳ありません)。
そして、 ターミネーター (GUI(GTKベースの)端末マルチプレクサー)がズームを行うことができることに言及するだけです。 (Ctrl-Shift-Xがデフォルトのキーバインドです)。もちろん、tmuxが行うことの多くは行いません...
これはネイティブのtmux機能です。
バージョン1.8では、-Z
にresize-pane
フラグが追加されました。 manページから:
-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
あなたのワークフローが私のもののようなものであれば(つまり、ウィンドウを最大化し、いくつかの作業を行い、その後すぐにそれを最大化しないで)、これはあなたにとって素晴らしいことです。
改良されたズーマーこれで、階層的であっても複数のペインをズームできます。以下を実行してtmuxサーバーをリロードすると(私の場合はCtrl-r)、次のようになります。 x ペインをズームインおよびズームアウトするためのキーバインド。ズームインは新しいウィンドウでペインを開くことによって実現され、ズームアウトはペインを元のウィンドウに戻すことによって実現されます。ズームインウィンドウを分割してしまうと、ズームインウィンドウのペインにズームインしたり、ズームインウィンドウに戻ったりすることができます。ズームアウトは、1つのペインを含むズームインウィンドウにいる場合にのみ発生します。
~/.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
Ctrl + b (プレフィックス)+ z tmux 2.1
の特定のペインにズームインするように動作します。あなたが押す Ctrl + b + z また、ペインを元のサイズに拡大します。新しいペインは作成されません。
Aksayが上記で投稿したソリューションと比較して、ズームインしたペインを分割しようとすると、分割できず、元のペインに戻ってそのペインを分割します。
ズームウィンドウのオプションはおそらくもっと用途が広いです...
同じキーストロークで最大化/最小化するためにこれを行いました。
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-prefix+z
それは一般的です:
Ctrlb+z
私にとっても、「clear && echo TMUX ZOOM && read」を使わずに作業してください。このスニペットで、最初のウィンドウから1つのペインを最小化するたびに消えます。
Tmux 1.8を使うことができない、またはより長い最大化状態を好む人のために、私はtmux 1.6+で動作する tmuxスクリプトを公開しました 。
それが役立つことを願っています。
古いバージョンのtmuxでは、この解決策が私が見つけた唯一の解決策です。
私はUbuntu 12.04を使用しており、この機能も必要でした。 tmux 1.8以降、tmux-prefix zを使用したズーム切り替えのネイティブサポートがあります。 tmux 1.8は12.04ではおそらく見当たらないので、別の開発用コンピュータでtmux 1.8をソースからコンパイルし、それを_tmux-1.8に変更し、1.8バイナリを/usr/bin/_tmux-1.8にコピーして.bash_aliases - > aliasを編集しました。 tmux = '_ tmux-1.8'。
私はこの早くて汚い方法を使っていることに何の問題にも気付いていないし、tmux 1.8が12.04になったときにも私は何も壊していない。