зміна розмірів терміналу в межах tmux не працює


2

Я новачок tmux, і у мене виникають проблеми з пошуком рішення щодо зміни розміру мого фактичного терміналу (я ще не дізнався досить про панелі та вікна).

Я біжу tmux1.6, і bash як моя оболонка, на ubuntu 12.04. bash має вбудовану функцію resize який, здається, працює за межами tmux просто чудово.

% resize -s 50 80

змінює розмір терміналу на 80 символів і 50 рядків у висоту. Однак, коли я намагаюся запустити цю точну команду всередині tmux панелі, вона зависає після того, як я натиснув клавішу Enter, доки не натискаю будь-яку клавішу, а потім відповідає

"resize: unknown character, exiting" 

який трохи непрозорий для мене. Тепер мені не потрібно використовувати resize функція per se, але як я можу через команду (вбудовану або сценарію) фізично змінити розмір терміналу, який відображає мої вікна tmux? Випадок використання полягає в тому, що, коли я вирішу відкрити нову вертикальну панель, обидва з яких містять код, я хочу, щоб мій термінал містив точну кількість символів (2 панелі = 161 символ, 80 для кожного та 1 для поділу рядка, наприклад). Зміна розміру за допомогою миші - це не тільки нудно; мій ubuntu не відображає ширину під час зміни розміру.

Будь-яка допомога цінується, спасибі!

Відповіді:


3

Здається, що tmux не дає втечу символів.

Я подав звіт про помилку на tmux bug-tracker - так що, сподіваюся, його можна виправити: http://sourceforge.net/p/tmux/tickets/88/

- редагувати: додано обхідний шлях -

Здається, ви можете змусити tmux дозволити конкретну команду виходу через: Можна використовувати printf '\033Ptmux;whatever\033' але потрібно подвоїти \033.

Таким чином, я написав невелику функцію bash (помістив її у ваш .bashrc або .bash_profile), який перевіряє, чи знаходиться він всередині tmux і друкує коди евакуації (тестується в xterm, Apple Terminal і 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
 }

Тоді ви можете викликати його так:

 resimux 50 80

Вихідна послідовність зміни розміру надсилається на всі підключені термінали.

Вуаля.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.