Fügen Sie dies Ihrem ~/.tmux.conf
hinzu :
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"
Grundsätzlich sollte dies mit den tmux-Versionen 2.6 + laufen (danach wurden die Umgebungsvariablen pane_at_top, pane_at_bottom, pane_at_left, pane_at_right hinzugefügt. Für tmux
Wenn Sie außerdem eine benutzerdefinierte Shell starten möchten, tun Sie dies über
Quelle:github Issues-Thread, den ich gestartet habe
Vielen Dank an Gilgamesh Skytrooper für das Posten des Problems auf Github. Hier ist eine einfache Version, die mit mehreren Sitzungen arbeiten kann und keinen Shell-Unterprozess aufruft.
Entfernen Sie set-option -g default-command fish
(oder zsh oder csh oder was auch immer). Wenn Sie alternativ eine Nicht-Bash-Shell als Ihre tmux-Standard-Shell verwenden möchten, legen Sie sie als solche fest (set-option -g default-shell
) und dann können Sie die obige Logik im Shell-Skript Ihrer Wahl auscodieren. Die Verwendung bestimmter Shells (wie in meinem Fall) bietet Ihnen jedoch nicht die Bequemlichkeit von Einzeiler-if-Befehlen (oder es könnte einfach sein, dass ich nicht genug über bestimmte Shells weiß, oder vielleicht funktionieren mehrere Zeilen in run- Schale.
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
wenn Sie das Präfix (C-b
) zuerst und ändern Sie die Bindungen M-[awds]
nach Ihren Wünschen.