il ridimensionamento di un terminale all'interno di tmux non sembra funzionare


2

Sono nuovo tmuxe non riesco a trovare una soluzione per ridimensionare il mio terminale reale (non ho ancora imparato abbastanza su pannelli e finestre).

Sto eseguendo tmux1.6, e bashcome la mia shell, su ubuntu12.04. bashha una funzione integrata resizeche sembra funzionare al di fuori di tmux.

% resize -s 50 80

ridimensiona il terminale a 80 caratteri di larghezza e 50 linee di altezza. Tuttavia, quando provo a eseguire questo comando esatto all'interno di un riquadro tmux, si blocca dopo aver premuto Invio, fino a quando non premo un tasto qualsiasi, quindi risponde

"resize: unknown character, exiting" 

che è un po 'opaco per me. Ora, non ho bisogno di usare la resizefunzione di per sé, ma come posso, tramite un comando (incorporato o con script), ridimensionare fisicamente il terminale che sta visualizzando le mie finestre di tmux? Il caso d'uso di questo è che quando decido di aprire un nuovo riquadro verticale, entrambi contenenti codice, voglio che il mio terminale sia largo un numero esatto di caratteri (2 riquadri = 161 caratteri, 80 per ciascuno e 1 per la divisione linea, ad esempio). Il ridimensionamento con il mouse non è solo noioso; il mio ubuntu non mostra la larghezza mentre sto ridimensionando.

Qualsiasi aiuto è apprezzato, grazie!

Risposte:


3

Sembra che tmux non stia lasciando passare i personaggi di fuga.

Ho presentato una segnalazione di bug sul tmux bug-tracker - quindi spero che possa essere corretto: http://sourceforge.net/p/tmux/tickets/88/

- modifica: soluzione alternativa aggiunta -

Sembra che tu possa forzare tmux a far passare un comando di escape specifico: puoi usare printf '\033Ptmux;whatever\033'ma devi raddoppiare \033.

Quindi ho scritto una piccola funzione bash (inseriscila nel tuo .bashrc o .bash_profile), che verifica se sei all'interno di tmux e stampa i codici di escape (testati in xterm, Apple Terminal 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
 }

Quindi puoi chiamarlo così:

 resimux 50 80

La sequenza di escape del ridimensionamento viene inviata a tutti i terminali collegati.

Ecco.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.