これを ~/.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 以降で実行する必要があります (その後、pane_at_top、pane_at_bottom、pane_at_left、pane_at_right 環境変数が追加されました。tmux
さらに、カスタム シェルを起動する場合は、
ソース:私が始めた github Issues スレッド
この問題を github に投稿してくれた Gilgamesh Skytrooper に感謝します。これは、複数のセッションで動作し、シェル サブプロセスを呼び出さない単純なバージョンです。
set-option -g default-command fish
まで実行します。 (または zsh や csh など)。別の方法として、bash 以外のシェルを tmux のデフォルト シェルとして使用する場合は、そのように設定します (set-option -g default-shell
) そして、選択したシェル スクリプトで上記のロジックをコーディングできます。ただし、(私の場合のように)特定のシェルを使用しても、ワンライナーifコマンドの利便性は得られません(または、特定のシェルについて十分に知らないか、実行時に複数の行が機能する可能性があります-
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]
を変更します