Isso é um pouco complicado, mas pode ser bom o suficiente para você. A partir da versão 2.3, você pode encontrar as coordenadas xey das bordas de cada painel. Por exemplo, display -p #{pane_right}
para um painel na extremidade direita de um terminal de 80 colunas seria 79. Se você der o comando para ir para o próximo painel, e o novo painel pane_right
for, por exemplo, 39 , então você moveu para a esquerda, então você vai querer voltar para o painel anterior com select-pane -l
.
Você pode executar a maioria dos comandos tmux a partir de um shell script, então crie o seguinte arquivo mytmux
no seu PATH e torne-o executável ( chmod +x mytmux
):
#!/bin/bash
# https://unix.stackexchange.com/a/451473/119298
restrict(){
case $1 in
U) d=-U p=pane_top cmp=-gt ;;
D) d=-D p=pane_bottom cmp=-lt ;;
L) d=-L p=pane_left cmp=-gt ;;
R) d=-R p=pane_right cmp=-lt ;;
*) exit 1 ;;
esac
old=$(tmux display -p "#{$p}")
tmux select-pane "$d"
new=$(tmux display -p "#{$p}")
[ "$new" "$cmp" "$old" ] && tmux select-pane -l
exit 0
}
case $1 in
-restrict)shift
restrict "${1?direction}" ;;
esac
configure as seguintes ligações no seu ~/.tmux.conf
:
bind-key -r -T prefix Up run-shell 'mytmux -restrict U'
bind-key -r -T prefix Down run-shell 'mytmux -restrict D'
bind-key -r -T prefix Left run-shell 'mytmux -restrict L'
bind-key -r -T prefix Right run-shell 'mytmux -restrict R'
Você precisará estender isso se quiser gerenciar várias sessões, por exemplo.