select-paneコマンドが元々トリガされた方向にウィンドウが残っていなかった場合、tmuxウィンドウの反対側にあるウィンドウを選択させる動作を無効にできますか?
そうでない場合は、特定の方向に別のウィンドウがあるかどうかを確認する方法はありますか?
tmuxウィンドウに(v)分割アクティブウィンドウがなく、select-paneコマンドがトリガーされると、エラーメッセージが表示されます。これは予想される動作です。
あなたの答えに感謝します
答え1
次の項目に追加してください~/.tmux.conf
。
set-option -g default-shell /bin/bash
unbind Up
unbind Down
unbind Right
unbind Left
bind Up run-shell "if [ $(tmux display-message -p '#{pane_at_top}') -ne 1 ]; then tmux select-pane -U; fi"
bind Down run-shell "if [ $(tmux display-message -p '#{pane_at_bottom}') -ne 1 ] ; then tmux select-pane -D; fi"
bind Right run-shell "if [ $(tmux display-message -p '#{pane_at_right}') -ne 1 ]; then tmux select-pane -R; fi"
bind Left run-shell "if [ $(tmux display-message -p '#{pane_at_left}') -ne 1 ]; then tmux select-pane -L; fi"
デフォルトでは、これはtmuxバージョン2.6+で動作するはずです(その後、それらはpanel_at_top、panel_at_bottom、panel_at_left、panel_at_right環境変数を追加しました。
また、カスタムシェルを起動するにはset-option -g default-command fish
(またはzshやcshなど)を使用してください。あるいは、bash以外のシェルをtmuxデフォルトシェルとして使用するには、(set-option -g default-shell
)に設定し、必要なシェルスクリプトに上記のロジックを作成します。しかし、(私の場合と同様に)いくつかのシェルを使用すると、コマンドは単一行の利便性を提供しません(または一部のシェルについて十分にわからないか、複数の行がすぐに機能する可能性があります)シェル。
答え2
質問を投稿してくれたGilgamesh Skytrooperに感謝します。フラッグハブ。これは、複数のセッションを処理でき、シェルサブプロセスを呼び出さない単純なバージョンです。
bind -n M-a if -F '#{pane_at_left}' '' 'select-pane -L'
bind -n M-d if -F '#{pane_at_right}' '' 'select-pane -R'
bind -n M-w if -F '#{pane_at_top}' '' 'select-pane -U'
bind -n M-s if -F '#{pane_at_bottom}' '' 'select-pane -D'
-n
プレフィックス()を最初に押すには、それを削除してから必要に応じてC-b
バインディングを変更します。M-[awds]