web-dev-qa-db-ja.com

tmuxのペインを最大化する

Tmuxでペインを最大化してから以前のサイズに復元すると非常に便利な場合があります。

私はマニュアルを読んでいます、そして私は方法を見つけることができません。私が思いついたのは、ペインを "最大"幅にリサイズするためのキーと、それをあらかじめ定義された幅に戻すための別のキーをバインドできるということです。

もちろんこれには欠点があるので、誰かがもっと良い考えを持っているかどうか私は思っています。

229
Ivan

tmux 1.8以降

回答の下 からネイティブにサポートされるようになりました:

バージョン1.8では、サイズ変更ペインに-Zフラグが追加されました。 manページから:

-Zを使用すると、アクティブペインはズーム(ウィンドウ全体を占める)とズーム解除(レイアウト内の通常の位置)の間で切り替わります。

古いtmux(元の回答)

別のオプションは、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が行うことの多くは行いません...

54
Hamish Downer

これはネイティブのtmux機能です。

バージョン1.8では、-Zresize-paneフラグが追加されました。 manページから:

-Zを指定すると、アクティブペインはズームされた状態(ウィンドウ全体を占める)とズームされていない状態(レイアウト内の通常の位置)で切り替わります。

それは tmux-prefix - z 私のインストールではデフォルトで(OS XではHomebrew経由)。

474
Tyler Holien

それで、あなたはしばらく前にこれを尋ねたことを私は知っています...しかし私は今日までスクリーンから切り替えませんでした!

私は同じ問題に遭遇しました、これが私がそれをどのように解決したかです:

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

あなたのワークフローが私のもののようなものであれば(つまり、ウィンドウを最大化し、いくつかの作業を行い、その後すぐにそれを最大化しないで)、これはあなたにとって素晴らしいことです。

49
Ryan

改良されたズーマーこれで、階層的であっても複数のペインをズームできます。以下を実行して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
25
akshay

Ctrl + b (プレフィックス)+ z tmux 2.1の特定のペインにズームインするように動作します。あなたが押す Ctrl + b + z また、ペインを元のサイズに拡大します。新しいペインは作成されません。

Aksayが上記で投稿したソリューションと比較して、ズームインしたペインを分割しようとすると、分割できず、元のペインに戻ってそのペインを分割します。

ズームウィンドウのオプションはおそらくもっと用途が広いです...

14
alpha_989

同じキーストロークで最大化/最小化するためにこれを行いました。

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
1
Tom Hale

これには、デフォルトのショートカットがあります。

tmux-prefix+z

それは一般的です:

Ctrlb+z

1
Youcef4k

私にとっても、「clear && echo TMUX ZOOM && read」を使わずに作業してください。このスニペットで、最初のウィンドウから1つのペインを最小化するたびに消えます。

1
Slim

Tmux 1.8を使うことができない、またはより長い最大化状態を好む人のために、私はtmux 1.6+で動作する tmuxスクリプトを公開しました

それが役立つことを願っています。

0
Gregory Pakosz

古いバージョンのtmuxでは、この解決策が私が見つけた唯一の解決策です。

https://github.com/jipumarino/tmux-zoom

0
Brad Parks

私は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になったときにも私は何も壊していない。

0
oblivian