ネストされたtmuxセッションにショートカットを送信する方法

ネストされたtmuxセッションにショートカットを送信する方法

私のローカルコンピュータとリモートコンピュータの両方にこのtmux設定があります。

is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)g?(view|n?vim?)(diff)?$"'

bind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"

リモートセッションから別のウィンドウに移動しようとしましたが、入れ子になったセッションには送信されません。すべてのウィンドウ間をきれいに切り替えるには、Caps Lock + hをどのように送信する必要がありますか?

ベストアンサー1

sshローカルポッドで実行し、tmuxリモート側で実行しているとします。

簡単な解決策は正規表現sshに追加することです。欠点は、遠隔端にあるかどうかにかかわらずsend-keys C-h動作することです。リモート側がtmux存在することを確認するのは簡単ではありません(可能であれば信頼できる方法で)。tmux

tmuxまた、ローカルネストされたtmuxセッションを扱うこともできます。

修正したコード:

is_vim='echo "#{pane_current_command}" | grep -iqE "(^|\/)(g?(view|n?vim?)(diff)?|ssh|tmux)$"'
bind-key -n C-h if-shell "$is_vim" "send-keys C-h" "select-pane -L"

select-pane -L内部セッションは外部セッションのポッドを認識しません。セッション内のウィンドウのみが選択されます。 IMOでは、内部セッションのウィンドウ内を移動して境界に達すると、外部セッションに透過的に「ジャンプ」できるロジックを構築することは非常に困難です(可能であれば強力な方法で)。

おすすめ記事