Есть ли способ перерисовать окно tmux при переключении меньшего монитора на более крупный?
Предположим, вы подключаетесь к удаленному серверу через ssh с помощью Terminal.app. Когда вы "tmux attach" с монитором большего разрешения от меньшего, который вы ранее запускали tmux, он рисует точки вокруг консоли. Он не соответствует размеру нового окна. Есть ли способ перерисовать и очистить окно? CTRL + L или CTRL - B + R не помогает. Я не мог найти правильную команду для человека.
% tmux -V
tmux 1.5
Ответы
Ответ 1
tmux ограничивает размеры окна до наименьшего из каждого измерения во всех сеансах, к которым подключено окно. Если бы этого не произошло, не было бы разумного способа отобразить всю область окна для всех подключенных клиентов.
Самое простое - отсоединить других клиентов от сеансов при подключении:
tmux attach -d
В качестве альтернативы вы можете перенести любые другие клиенты на другой сеанс перед присоединением к сеансу:
takeover() {
# create a temporary session that displays the "how to go back" message
tmp='takeover temp session'
if ! tmux has-session -t "$tmp"; then
tmux new-session -d -s "$tmp"
tmux set-option -t "$tmp" set-remain-on-exit on
tmux new-window -kt "$tmp":0 \
'echo "Use Prefix + L (i.e. ^B L) to return to session."'
fi
# switch any clients attached to the target session to the temp session
session="$1"
for client in $(tmux list-clients -t "$session" | cut -f 1 -d :); do
tmux switch-client -c "$client" -t "$tmp"
done
# attach to the target session
tmux attach -t "$session"
}
takeover 'original session' # or the session number if you do not name sessions
Экран снова будет уменьшаться, если меньший клиент переключится на сеанс.
Существует также вариант, когда вы только "берете" окно (свяжите окно с новым сеансом, установите aggressive-resize
и переключите любые другие сеансы, в которых это окно активно в каком-либо другом окне), но это сложнее script в общем случае (и отличается от "exit", так как вы хотите отключить окно или убить сеанс вместо того, чтобы просто отсоединиться от сеанса).
Ответ 2
Вы всегда можете нажать CTRL - B + D, чтобы выбрать, какого клиента вы хотите отделить от сеанса.
tmux перечислит все сеансы с их текущим измерением. Затем вы просто отсоединяетесь от всех сеансов меньшего размера.
Ответ 3
Более простое решение для последних версий tmux (проверено на 1.9) теперь можно сделать:
tmux detach -a
-a
для всех остальных клиентов на этом сеансе, кроме текущего
Вы можете использовать его в своем. [ bash | zsh] rc
alias takeover="tmux detach -a"
Рабочий процесс. Обычно вы можете подключиться к своему сеансу, и если вас беспокоит другой сеанс, который заставил уменьшить размер окна tmux, вы можете просто вызвать takeover
.
Ответ 4
Я просто столкнулся с этой проблемой и наткнулся на другую ситуацию. Хотя это, вероятно, просто единорог, я думал, что я его выложу.
У меня был один сеанс, который был меньше, и я заметил, что размер шрифта был другим: меньшая сессия имела меньшие шрифты. По-видимому, по какой-то причине я изменил размер шрифта.
Итак, в OS X я просто сделал Cmd-+
на сеансе меньшего размера, и он снова встал на место.
Ответ 5
Другие ответы не помогли мне, поскольку я только подключил клиента (предыдущий, который запустил сеанс, уже был отсоединен).
Чтобы исправить это, я последовал за ответом здесь (я не использовал xterm).
Что просто сказал:
- Отсоединить от сеанса tmux
- Запустить
resize
команду linux
- Повторное подключение к сеансу tmux
Ответ 6
ps ax | grep tmux
17685 pts/22 S+ 0:00 tmux a -t 13g2
17920 pts/11 S+ 0:00 tmux a -t 13g2
18065 pts/19 S+ 0:00 grep tmux
убейте другого.