2

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

Я использую tmux1.6 и bash качестве оболочки на ubuntu12.04. bash есть встроенная функция resize которая отлично работает вне tmux.

% resize -s 50 80

изменяет размер терминала до 80 символов в ширину и 50 строк в высоту. Тем не менее, когда я пытаюсь выполнить эту команду внутри панели tmux, она зависает после нажатия клавиши ввода, пока не нажму любую клавишу, а затем ответит

"resize: unknown character, exiting" 

что немного непрозрачно для меня. Теперь мне не нужно использовать функцию resize как таковую, но как я могу с помощью команды (встроенной или созданной по сценарию) физически изменить размер терминала, который отображает мои окна tmux? Вариант использования этого заключается в том, что когда я решаю открыть новую вертикальную панель, обе из которых содержат код, я хочу, чтобы мой терминал имел точное число символов в ширину (2 панели = 161 символ, 80 для каждого и 1 для разделительного линия, например). Изменение размера с помощью мыши не только утомительно; моя Ubuntu не отображает ширину, пока я изменяю размер.

Любая помощь приветствуется, спасибо!

1 ответ1

3

Кажется, что tmux не пропускает экранирующих символов.

Я отправил отчет об ошибке на трекер ошибок tmux - так что, надеюсь, это можно исправить:http://sourceforge.net/p/tmux/tickets/88/

- изменить: добавлен обходной путь -

Кажется, вы можете заставить tmux пропустить определенную команду escape: вы можете использовать printf '\033Ptmux;whatever\033' но вам нужно удвоить \033 .

Итак, я написал небольшую функцию bash (поместите ее в ваш .bashrc или .bash_profile), которая проверяет, находитесь ли вы внутри tmux, и печатает escape-коды (протестированные в 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

Escape-последовательность изменения размера отправляется на все подключенные терминалы.

Вуаля.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .