典型的な状況は次のとおりです。
$ tmux
[0] $ ssh example.com
$ tmux attach
[0] $
tmuxセッションを開いてから、サーバーにSSHで接続し、既存のtmuxセッションに接続します。この時点で、1つのtmuxセッションが別のセッション内にあります。内部のtmuxセッションにコマンドを送信するにはどうすればよいですか?
注:両方のtmuxセッションのキーバインディングは同じです。
典型的な状況は次のとおりです。
$ tmux
[0] $ ssh example.com
$ tmux attach
[0] $
tmuxセッションを開いてから、サーバーにSSHで接続し、既存のtmuxセッションに接続します。この時点で、1つのtmuxセッションが別のセッション内にあります。内部のtmuxセッションにコマンドを送信するにはどうすればよいですか?
注:両方のtmuxセッションのキーバインディングは同じです。
回答:
このsend-prefixコマンドを使用して、アクティブなペイン(実行中のプロセス)にプレフィックスキーストロークを送信できます。デフォルトでは、プレフィックスはCbであり、Cbはバインドされていますsend-prefix(2回押すと、アクティブなペインに1つのCbが送信されます)。これは、内部tmuxのバインディングにアクセスするために必要なものです。インスタンスのです。
最初のCbは、プレフィックスキーとして「外部」のtmuxインスタンスによってキャプチャされます。2つ目は、「外部」のtmuxインスタンスによってキャプチャされ、そのCbバインディングをトリガーします(send-prefix)。これにより、Cbが外部インスタンスのアクティブなペインに送信されます。このペインで実行されているプロセスは(最終的にはsshインスタンスを介して)「内部」のtmuxインスタンスです。プレフィックスキーとしてCbをキャプチャします。これで、次のキーストロークが外側のtmuxインスタンスを介して渡され、内側のインスタンスによってキャプチャされてバインディングがトリガーされます。
tmuxの第2レベルのインスタンスでcバインディング(new-window)をトリガーするには、Cb Cb cと入力します。第3レベルのたとえばtmuxは次のように入力しCbをCbとCbとCbとcを。
tmuxの複数のレイヤーを一般的に扱っている場合、各レベルでのこの2倍は煩わしいかもしれません。他のキーを節約できる場合は、接頭辞のないバインディングを作成して、(おそらく)入力を簡単にすることができます。
bind-key -n C-\ send-prefix
bind-key -n C-^ send-prefix \; send-prefix
2番目のレベルのtmuxで
新しいウィンドウを作成:C- \ c
3番目のレベルのtmuxで新しいウィンドウを作成:C- ^ c(またはC- \ C- \ c)
低いレベルのtmuxインスタンスに(簡単に)送信したいtmuxコマンドの数が限られている場合は、代わりに使用して、特定のバインディングを作成することができます(おそらく、最上位のtmuxインスタンスのみ)。send-keys
bind-key C-c send-keys C-b c
bind-key C send-keys C-b C-b c
第2レベルのtmuxで
新しいウィンドウを作成:Cb Cc
第3レベルのtmuxで新しいウィンドウを作成:Cb C
last-windowやったときに、それが呼ばれていたとして結合C-a C-aなど、: #bind-key C-a last-window。私の接頭辞はaデフォルトではなくであることに注意してくださいb。
bind-key -n C-\ send-prefix動作しません。tmuxが\を認識していません。手紙を使うとうまくいきます。
tmux bind-key -n 'C-\' send-prefix)、引用符のレベルを追加する必要があります。それ~/.tmux.conf(またはPrefix :コマンドライン)からの動作に問題がある場合は、同様の引用(つまりbind-key -n 'C-\' send-prefix)を試してみてください。
編集:
バインドキーとして使用することはお勧めしません。C-qこれは、デフォルトのコントロールキーコマンドであるためです。
画面のフリーズを解除し、画面表示を継続させます
ここで状況が発生し、@ Paschalisが解決策を提供します。
タイプ:二回不運(接頭辞としてCqを持つリモートtmuxのセッション)であることを起こる場合は
Cltr-q、その後:、およびtmuxはで入力します。send-keys C-q
簡単にするために、以下の行を ~/.tmux.conf
bind-key -n C-q send-prefix
その後、リモートtmuxのバインドキーとして直接使用できC-qます。