Ajoutez ceci à votre ~/.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"
Fondamentalement, cela devrait fonctionner avec les versions 2.6 + de tmux (après quoi ils ont ajouté les variables d'environnement pane_at_top, pane_at_bottom, pane_at_left, pane_at_right. Pour tmux
De plus, si vous souhaitez lancer un shell personnalisé, faites-le via
Source :fil de discussion sur les problèmes de github que j'ai lancé
Merci à Gilgamesh Skytrooper d'avoir posté le problème sur github. Voici une version simple qui peut fonctionner avec plusieurs sessions et n'invoque pas de sous-processus shell.
Supprimer set-option -g default-command fish
(ou zsh ou csh ou autre). Comme alternative, si vous souhaitez utiliser un shell non bash comme shell par défaut de tmux, définissez-le comme tel (set-option -g default-shell
), puis vous pouvez coder la logique ci-dessus dans le script shell de votre choix. Cependant, (comme c'était dans mon cas) l'utilisation de certains shells ne vous donne pas la commodité d'une seule ligne si les commandes (ou il se peut que je ne connaisse pas assez certains shells, ou peut-être que plusieurs lignes fonctionnent dans run- coque.
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
si vous voulez taper le préfixe (C-b
) d'abord, et changez les liaisons M-[awds]
à votre goût.