Есть ли способ перерисовать окно TMUX при переключении меньшего монитора на больший?

StackOverflow https://stackoverflow.com/questions/7814612

  •  26-10-2019
  •  | 
  •  

Вопрос

Допустим, вы подключаетесь к удаленному серверу через SSH с Terminal.App. Когда вы "Tmux прикрепляете" с большим монитором разрешения от меньшего, который вы ранее начинали Tmux, он привлекает точки вокруг консоли. Это не подходит для нового размера окна. Есть ли способ перерисовать и очистить окно? Ctrl+Л или же Ctrl-Беременный + р не помогает. Я не мог найти должную команду на человека.

% tmux -V
tmux 1.5
Это было полезно?

Решение

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, и переключайте любые другие сеансы, в которых это окно активно в какое -то другое окно), но сценарий труднее сценария (и отличается от «выхода», так как вы хотели бы не дать убить сессию или убить сеанс, а не просто отстранение из сессии).

Другие советы

Вы всегда можете нажать Ctrl-Беременный + СДВИГ-Дюймовый Чтобы выбрать, какой клиент вы хотите отсоединить от сеанса.

Tmux перечисляет все сеансы с их текущим измерением. Тогда вы просто отсоедините от всех сеансов меньшего размера.

Более простое решение о недавних версиях TMUX (протестировано на 1.9). Теперь вы можете сделать:

tmux detach -a

-a для всех других клиентов на этом сеансе, кроме текущего

Вы можете псевдолировать это в своем. [Bash | zsh] RC

alias takeover="tmux detach -a"

Рабочий процесс: вы можете подключаться к своему сеансу обычно, и если вас беспокоит другой сеанс, который вынудил размер окна TMUX, вы можете просто позвонить takeover.

Другие ответы не помогли мне, так как у меня только клиент был прикреплен (предыдущий, который начал сеанс, уже был отстранен).

Чтобы исправить это, я следовал ответу здесь (Я не использовал XERM).

Который просто сказал:

  1. Отключить от сеанса TMUX
  2. Бежать resize команда Linux
  3. Reattach to tmux session

Я только что столкнулся с этой проблемой и наткнулся на другую ситуацию. Хотя это, вероятно, просто единорог, я подумал, что выложу.

У меня была одна сессия, которая была меньше, и я заметил, что размеры шрифтов были разными: меньшая сессия имела меньшие шрифты. Видимо, я по какой -то причине изменил размеры шрифтов.

Итак, в OS X я только что сделал Cmd-+ На сеансе меньшего размера, и он перешел на место.

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

Убей другой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top