その場合、コンテキストに基づいてイベントを処理する tmux のネストされたレベルを変更するキーをスクリプト化することが可能になります。たとえば、ネストされた内部 tmux の現在のウィンドウで開いているペインが 1 つしかない場合、ホスト tmux によってキーが処理されるようにします。
ホスト tmux は、現在のペインで tmux が実行されていることを認識できるため、キーを「通過」させることができます。
しかし、子 tmux は、現在のウィンドウにペインが 1 つしかない場合、ホストtmux に「ああ、ありがとう、ペインが 1 つしかない」と伝えます。 tmux を実行していませんでした。
少なくとも 2 つの方法があります。ここでの問題は、内部 tmux が (1) それ自体が tmux で実行されていることを検出する方法がわからないため、(2) 状況に関する事実をホスト tmux に報告する方法を知っていることです。たとえば、私の vimrc は、tmux
Vim 内から を呼び出すことによってこれを行います (つまり、 vimscript system('tmux select-pane .+')
)。
もう 1 つの方法は、どうにかして外側の tmux を取得して内側の tmux がどのソケットであるかを把握し、呼び出しtmux -S innertmux-socket
て内側の tmux の状態を推定し、その情報に基づいてコマンドを送信するかどうかを決定することです。ソケット自体の tmux 変数だけに基づいてそのソケットのパスを特定できるという確証はありませんが、ターゲットを絞ったシェル スクリプトを使用すれば、これはそれほど難しくないと思います。
インセプションのジョークは大歓迎です...
質問は深刻ですが。これは冗談ではありません。これを達成する他の方法はありますか?