私のローカルコンピュータとリモートコンピュータの両方にこの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では、内部セッションのウィンドウ内を移動して境界に達すると、外部セッションに透過的に「ジャンプ」できるロジックを構築することは非常に困難です(可能であれば強力な方法で)。