典型的な状況は次のとおりです。
$ tmux
[0] $ ssh example.com
$ tmux attach
[0] $
Tmuxセッションを開いてから、サーバーにSSH接続して、既存のtmuxセッションに接続します。この時点で、別のtmuxセッションがあります。内部tmuxセッションにコマンドを送信するにはどうすればよいですか?
注:両方のtmuxセッションには同じキーバインディングがあります。
send-prefix
コマンドを使用して、アクティブなペイン(実行中のプロセス)にプレフィックスキーストロークを送信できます。デフォルトでは、プレフィックスはC-bであり、C-bはsend-prefix
(2回押すと、単一のC-bがアクティブペインに送信されます)。これは、内部tmuxインスタンスのバインディングにアクセスするために必要なものです。
最初のC-bは、「外部」tmuxインスタンスによってプレフィックスキーとしてキャプチャされます。 2番目のものは、「外部」tmuxインスタンスによってキャプチャされ、そのC-bバインディング(send-prefix
)。これにより、C-bが外部インスタンスのアクティブペインに送信されます。このペインで実行されるプロセスは、(最終的に、sshインスタンスを介して)「内部」tmuxインスタンス。 C-bをプレフィックスキーとしてキャプチャします。これで、次のキーストロークが外部tmuxインスタンスを介して渡され、内部インスタンスによってキャプチャされてバインディングがトリガーされます。
cバインディング(new-window
)tmuxの第2レベルのインスタンスでは、C-b C-b cと入力します。 tmuxの第3レベルのインスタンスの場合、C-b C-b C-b C-b cと入力します。
tmuxの複数のレイヤーを一般的に処理している場合、各レベルのこの倍増は煩わしい場合があります。他のキーを使用できない場合は、接頭辞のないバインディングを作成して、(おそらく)入力しやすくします。
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に送信したい場合インスタンス、代わりにsend-keys
いくつかの特定のバインディングを作成します(おそらくトップレベルtmuxインスタンスにのみ):
bind-key C-c send-keys C-b c
bind-key C send-keys C-b C-b c
第2レベルで新しいウィンドウを作成tmux:C-b C-c
第3レベルで新しいウィンドウを作成tmux:C-b C
内部にアクセスするには、コントロールを押しながらBを2回押します。
編集:
行う[〜#〜] not [〜#〜]使用の推奨C-q
はバインドキーとして、デフォルトのコントロールキーコマンドであるため
画面をフリーズ解除し、画面表示を継続させます
状況が発生します ここ 、@ Paschalisは解決策を提供します:
2回不運な場合(プレフィックスとしてC-qを使用したリモートtmuxセッション):
Cltr-q
、次に:
、tmuxに入力:send-keys C-q
簡単にするために、~/.tmux.conf
bind-key -n C-q send-prefix
その後、直接使用できますC-q
リモートtmuxのバインドキーとして。