como não passar da borda dos painéis no tmux

3

Por padrão, o tmux passa pela borda de um painel. Por exemplo, suponha que haja dois painéis, pane 1 e pane 2 . Suponha que você esteja em pane 1 e faça Ctrl + b , você está no pane 2 . Se você fizer novamente Ctrl + b , você estará novamente em pane 1 . Como posso desativar esse recurso, quando navego do último painel, não vou a lugar algum?

    
por Enan Ajmain 23.06.2018 / 10:26

2 respostas

2

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.

    
por 23.06.2018 / 16:23
0

As chaves Prefixo Seta são, por padrão, vinculadas como

bind-key -r -T prefix       Up                select-pane -U
bind-key -r -T prefix       Down              select-pane -D
bind-key -r -T prefix       Left              select-pane -L
bind-key -r -T prefix       Right             select-pane -R

A função select-pane não tem uma opção que diz "não faça o ciclo quando você chegar ao último painel nessa direção".

Olhando para o código-fonte que é executado para select-pane , parece que o ciclo esquerda / direita e superior / inferior são codificados, o que significa que é improvável que seja fácil impedir que ele se comporte dessa maneira .

    
por 23.06.2018 / 11:37

Tags