tmuxペインをウィンドウに移動する


228

複数のウィンドウがあるときに、tmuxで既存のペインを別のウィンドウに移動するにはどうすればよいですか?

私はスクリーンから来て、ペインに切り替えてから、希望のウィンドウに到達するまでウィンドウを切り替えることができます。tmuxはこれを許可していないようです。

回答:


209

これを行うコマンドはjoin-panetmux 1.4にあります。

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.

これを簡単にするために、私はそのためにこれらのバインドを持っ.tmux.confています:

# pane movement
bind-key j command-prompt -p "join pane from:"  "join-pane -s '%%'"
bind-key s command-prompt -p "send pane to:"  "join-pane -t '%%'"

1つ目はターゲットウィンドウからペインを取得して現在のウィンドウに結合し、2つ目はその逆を行います。

その後、セッション内から次を実行して、tmuxセッションをリロードできます。

$ tmux source-file ~/.tmux.conf

この方法を試していますが、コードを.tmux.confファイルに入れてCtrl-b、jを実行しても、何も起こらないようです。
-mrlanrat

2
その後、ヒット:あなたは、各カップルのペインで、オープン少なくとも2つのウィンドウ必要Prefix+sプロンプトウィンドウ名を入力し、そのウィンドウにペインを送信するために...
jasonwryan

私はまだこれで運がありません、何も起こりません。tmuxは、Ctrl-b、jまたはCtrl-b、sにまったく応答しないため、.tmux.confファイルを読み取っていないように感じます。(これらは構成ファイルの2行のみです)
mrlanrat

7
@mrlanratウィンドウ番号の前にコロンを付ける必要があることがわかりました。以下の私の答えをご覧ください。
ブルーノブロノスキー

1
「%%」とは何を指しますか?
オリゴフレン

152

結合ペインが答えです。私もtmuxのドキュメントに基づいて使用しようとすると問題が発生しました。-tおよび-sスイッチは[session:] windowではなく[session]:windowを受け入れるように見えることを発見しました。つまり、セッションの指定はオプションですが、:を含めることは必須です。(tmux 1.5を使用しています)

したがって、ペインを現在のウィンドウに追加し、ウィンドウ1をペインに配置するには、コマンドは(Ctrl-Bまたはバインドキーに続いて)...になります。

:join-pane -s :1

その後、デフォルトでCtrl-Bであるブレークペインを使用して、それらのアプリケーションをブレークできます。ショートカットにバインドする場合は、sのようなデフォルトのバインドをオーバーライドしないことをお勧めします。これは、インターネット上でchoose-sessionを含む回答を探し、システム上では機能しないためです。ブレークペインはにバインドされていることに注意してください!@はそのすぐ隣にあり、デフォルトでは何にもバインドされていません。そのため、このバインディングをお勧めします...

bind-key @ command-prompt -p "create pane from:"  "join-pane -s ':%%'"

あるいは、インタラクティブなセレクターを使用するには...

bind-key @ choose-window 'join-pane -h -s "%%"'

または、最後にアクセスしたウィンドウに常に参加するには...

bind-key @ join-pane -h -s !

注:これ-hにより、デフォルトの動作である逆とは対照的に、ペインが水平に(垂直に分割されて)スタックされます。

最も重要なことは、ショートカットの選択を何でも学習することです。設定しただけで忘れてしまうと、外部サーバーで自分自身を見つけたときに目を奪われるからです。それに直面しましょう。ターミナルマルチプレクサが提供する最も重要なことは、リモートサーバーでの信頼できるセッションです。

これで、GNU ScreenからTmuxへの変換が完了しました。私は決して振り返ることはありません。

楽しい!


2
私も ':'が欠けていました...これに感謝します。
ラスカルキング

私は最近、これを示唆するコメントなしでこれについて2票を得ました。それは単なる失礼な反FOSS文化です。
ブルーノブロノスキー

1
ドキュメントはコロンについてまったく話していない!素敵なもの
ジョニーラー

1
ドット構文を使用するとwindow.pane、たとえばjoin-pane -s 1.0ウィンドウ1のペイン0を現在のウィンドウに移動するのに役立ちました。詳細はmaciej.lasyk.info/2014/Nov/19/tmux-join-pane
mbigras

tmux 2.1の時点では、:どうやらもう必要ありません(例:doのみ:join-pane -s 1)。たぶんそれは以前のバージョンのバグだったのでしょう
-villapx

38

ペインを独自のウィンドウに移動するために使用してきたものが気に入っていると思います。私が使う

break-pane -t :

私は実験を通してそれを理解しましたが、それは非常にうまくいくようです。キーバインドまたはエイリアスを簡単に作成でき、スクリプトは不要です。


2
+1。私はこれよりもはるかに頻繁に使用する傾向がありjoin-paneます。
クリスB

14

ペイン識別子をプロンプトに入力したくない場合は、使用することもできます

bind-key j "join-pane -s !"

最後のアクティブなペイン/ウィンドウを現在のウィンドウに結合します。


1
どのバージョンを使用していますか?unknown command: join-pane -s !1.6で取得しています。
パラドロイド

ここでは2.0を使用していますが、引用符なしで行をconfに入れるだけでうまくいくようです。bind-key j join-pane -s !
bkzland

13

他の答えを調べてtmuxのマニュアルページを熟読した後、今のところ次のバインディングに決めました。

bind-key S choose-window 'join-pane -v -s "%%"'
bind-key V choose-window 'join-pane -h -s "%%"'

これにより、参加するウィンドウをインタラクティブに選択し、小文字s/ vバインディングをミラーリングして新しい垂直/水平分割を作成できます。ウィンドウの代わりに個々のペインを選択する方法を知っている人がいたら教えてください。


これは非常に役立ちます。ありがとうございました。残念ながら-vおよび-hは、それぞれ垂直および水平の「分割」を作成しません。それらは、それぞれ垂直および水平の「スタックペイン」を作成します。(つまり、垂直に積み上げられたペインは水平に分割されているということです。)そのため、そのように脳を鍛えなければなりません。また-v、これもデフォルトです。そのため、私はそれを省い-hて、あなた~/.tmux.confがチートシートとして動作するように、そこに入れるだけにします。
ブルーノブロノスキー

「割れガラスの反対側」の他の答えよりもこれが好きです。ペインを一時的に独自のウィンドウに自由に分割した後、後で古いウィンドウの1つに送り返したいと思います。
ステーブルドッグ

13

キーバインディング

デフォルトでは、Ctrl+はb!でしょう破る新しいウィンドウにアクティブなペインをし、それに切り替えます。

どこCtrl+はbデフォルトで接頭語のために

詳細

tmuxこのキー実行コマンドがあるbreak-pane(別名:breakp)で実装されているcmd-break-pane.cとのデフォルトとしてバインドキーbindings.cに見られるようにlist-keys(別名:lsk)コマンドの出力:

bind-key    -T prefix       !                 break-pane

4

キーバインドを変更する必要はありません。

移動したいウィンドウにフォーカスがある一方で、タイププレフィックスは、次に:join-pane -t :1どこ1先のウィンドウの数が同じセッションにあるものです。のように名前を追加することで、別のセッションに移動できproject:3ます。私にとっては、join-paneタブのオートコンプリートですj

コマンドに-hまたは-vスイッチを追加して、宛先で作成された新しい分割の方向を設定するか、単にその位置に移動してPrefix + spaceを再配置します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.