redimensionar um terminal dentro do tmux parece não funcionar

2

Sou novo em tmux e estou com dificuldades em encontrar uma solução para redimensionar meu terminal real (ainda não aprendi o suficiente sobre painéis e janelas).

Estou executando o tmux1.6 e o bash como meu shell no ubuntu12.04. bash tem uma função interna resize que parece funcionar fora do tmux muito bem.

% resize -s 50 80

redimensiona o terminal para 80 caracteres de largura e 50 linhas de altura. No entanto, quando eu tento executar este comando exato dentro de um painel tmux, ele trava depois que eu pressiono enter, até que eu aperto qualquer tecla, e então responde

"resize: unknown character, exiting" 

que é um pouco opaco para mim. Agora, não preciso usar a função resize per se, mas como posso, através de um comando (embutido ou roteirizado), redimensionar fisicamente o terminal que está exibindo minhas janelas tmux? O caso de uso para isso é que quando eu decido abrir um novo painel vertical, ambos contendo código, eu quero que meu terminal tenha um número exato de caracteres de largura (2 painéis = 161 caracteres, 80 para cada e 1 para a divisão). linha, por exemplo). Redimensionar com o mouse não é apenas tedioso; meu ubuntu não exibe a largura enquanto eu estou redimensionando.

Qualquer ajuda é apreciada, obrigado!

    
por dwanderson 29.10.2013 / 00:52

1 resposta

3

Parece que o tmux não está deixando passar os caracteres de escape.

Eu arquivei um relatório de bug no rastreador de bugs do tmux - então, espero que ele possa ser corrigido: link

- edit: solução alternativa adicionada -

Parece que você pode forçar o tmux a deixar um comando de escape específico através de: Você pode usar printf '3Ptmux;whatever3' , mas precisa duplicar 3 .

Então eu escrevi uma pequena função bash (coloque em seu .bashrc ou .bash_profile), que testa se você está dentro do tmux e imprime os códigos de escape (testados no xterm, terminal da Apple e iTerm):

 function resimux {                                                                                                                                                           
     if [ ! -z "$TMUX" ]; then
         printf '\ePtmux;\e\e[8;%i;%it\e\' $1 $2
     else
         printf '\e[8;%i;%it' $1 $2
     fi
 }

Você pode ligar assim:

 resimux 50 80

A seqüência de escape de redimensionamento é enviada para todos os terminais conectados.

Voila.

    
por 17.12.2013 / 23:55