Присоединить к разным окнам в сеансе

117

У меня довольно простая сессия tmux, запущенная с двумя открытыми окнами; один из них для локального взлома и один для работы.

Что я хотел бы сделать, это просто подключиться к окну взлома, оставив рабочее окно открытым в другом терминале. Однако, как только я подключаюсь к tmux, все команды отправляются в оба окна, поэтому, если я переключаюсь в другое окно, то же самое происходит в другом терминале и наоборот.

Есть ли способ для меня просто подключиться к каждому окну отдельно?

Нафтули Кей
источник

Ответы:

153

Причина, по которой оба клиента переключают окна одновременно, заключается в том, что они оба подключены к одному и тому же сеансу («текущее окно» является атрибутом сеанса, а не клиентом). То, что вы можете сделать, это связать одно или несколько окон с несколькими различными сессиями. Поскольку у каждого сеанса есть свое «текущее окно», вы можете независимо переключать окна в каждом сеансе.

Самый простой способ использовать эту функцию - использовать функцию «сгруппированные сессии» new-sessionкоманды:

$ tmux new-session -t 'original session name or number'

Чтобы увидеть сеансы, доступные в настоящее время:

$ tmux list-sessions

Каждый сеанс в группе будет автоматически совместно использовать один и тот же набор окон: открытие / связывание (или закрытие / снятие связи) окна в одном сеансе группы автоматически приводит к тому, что одно и то же окно связывается (или не связывается) во всех других сеансах группы. группа.

Когда вы закончите свою «дополнительную» сессию, вы можете убить ее с помощью kill-session. Сами окна не будут убиты, если только ваша сессия не была единственной, с которой они были связаны. Кроме того, вы можете отключиться от своего «дополнительного» сеанса, как обычно (префикс dили detach-client); если вы продолжаете свой «дополнительный» сеанс (просто отсоединяясь от него), вы можете дать ему описательное имя (префикс $или rename-session), чтобы вы могли легко идентифицировать его и подключиться к нему позже (вы также можете задать «оригинальная» сессия тоже имя).


Если вы не хотите автоматически обмениваться динамическим набором окон, то вы можете использовать link-windowunlink-window) для переноса отдельных окон в (и из) свой собственный «персональный» сеанс; это обеспечивает неавтоматический и низкоуровневый доступ к той же базовой функциональности, на которой основаны «сгруппированные сеансы» (окна связаны в несколько сеансов).

Крис Джонсен
источник
12
Gread ответ. Знаете ли вы, как предотвратить синхронизацию двух открытых сессий? Если я создаю новую сессию, а окно меньше, большая часть экранного пространства в оригинале теряется.
defhlt
32
Я нашел ответ на свой вопрос:setw -g aggressive-resize on
defhlt
1
Это поддерживается как "мошеннический" режим в wemux .
голубоглазый