Tmux insert pane number

0

Digamos que eu tenha uma janela tmux com 3 painéis, em cada terminal de uma máquina diferente, e desejo configurar o endereço IP deles como:

'$ ifconfig eth0 192.168.0.<pane_number>

Eu normalmente sincronizo painéis para escrever em todos eles ao mesmo tempo, então eu gostaria de pressionar alguma combinação de teclas e então inserir o número do painel específico em cada painel (inserir 0 no painel 0, 1 no painel 1 ...)

Existe tal coisa disponível?

    
por Chirlo 24.11.2016 / 14:29

1 resposta

2

Existe provavelmente um método mais simples, mas isso funciona. Coloque em seu ~/.tmux.conf , por exemplo

bind-key m run-shell 'v=#D; tmux send-keys ${v#%}'

Em seguida, digitar C-b m deve inserir o número do painel. #D é substituído por %0 para o painel 0 e assim por diante. ${v#%} é remover a parte % , assumindo o shell bash. Para ligar a uma chave sem precisar do C-b , por exemplo, para C-o , use bind-key -n C-o ... .

Para ter um número diferente em cada painel quando sincronizado, você terá que desativar temporariamente a sincronização, enviar um caractere para cada painel e restaurar a sincronização. Aqui está um script bash, digamos mytmux você pode colocar em seu PATH e chamar de seu ~/.tmuxrc .

#!/bin/bash
# tmux helper.  http://unix.stackexchange.com/a/325816/119298
if [[ $(tmux show-window-option synchronize-panes) == *on ]]
then    tmux set-window-option -q synchronize-panes off
        restore="tmux set-window-option -q synchronize-panes on"
fi
tmux list-panes -s |
# eg 0.1: [80x11] [history 0/2000, 0 bytes] %2
while IFS=".:$IFS" read winid pane rest
do    tmux send-keys -t $winid.$pane $pane
done
$restore

Você pode configurar uma ligação, por exemplo, para C-b n :

bind-key n run-shell "mytmux"
    
por 24.11.2016 / 18:19

Tags