Перемещение панели tmux в окно

Как переместить существующую панель в другое окно в tmux , когда у меня несколько окон, и наоборот?

Я иду из экрана , где я могу переключиться на панель, а затем переключить окна, пока не дойду до того, что хочу; tmux , похоже, не позволяет этого.

210 голосов | спросил mrlanrat 3 J0000006Europe/Moscow 2011, 07:43:27

7 ответов


196

Команда для этого join-pane в tmux 1.4.

панель объединения [-dhv] [-l размер | -p percent] [-s src-pane] [-t dst-pane]
    (псевдоним: joinp)
    Подобно split-window, но вместо разделения dst-панели и создания
    новую панель, разделите ее и переместите src-панель в пространство. Это может
    используется для обратной перегородки.

Чтобы упростить это, у меня есть эти привязки в моем .tmux.conf для этого:

# перемещение панели
bind-key j command-prompt -p "присоединиться к панели из:" "join-pane -s '%%'"
bind-key s command-prompt -p "send pane to:" "join-pane -t '%%'"

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

Затем вы можете перезагрузить сеанс tmux, выполнив следующее из сеанса:

$ tmux source-file ~ /.tmux.conf
ответил jasonwryan 3 J0000006Europe/Moscow 2011, 07:49:27
135

join-pane - это ответ. У меня также были проблемы с моими попытками использовать его на основе документации tmux. Я обнаружил, что переключатели -t и -s, похоже, принимают окно [session]: window, а не [session:]. То есть указание сеанса необязательно, но в том числе: является обязательным. (Я использую tmux 1.5)

Поэтому, чтобы добавить панель в текущее окно и поместить окно 1 в панель, команда будет (Ctrl-B или любой ваш ключ привязки, за которым следует) ...

: join-pane -s: 1

Затем вы можете разбить их appart с помощью панели break, которая по умолчанию: Ctrl-B! Если вы хотите привязать его к ярлыку, я предлагаю НЕ переопределять привязку по умолчанию, например s, потому что по дороге вы будете искать в Интернете ответ, который предполагает выбор-сеанс, и он не будет работать в вашей системе. Обратите внимание, что перерыв привязан! и @ находится рядом с ним и не привязано ни к чему по умолчанию. По этой причине я предлагаю эту привязку ...

bind-key @ command-prompt -p "создать панель из:" "join-pane -s ': %%'"

В качестве альтернативы иметь интерактивный выбор ...

bind-key @ select-window 'join-pane -h -s "%%"'

В качестве альтернативы, всегда присоединяться к последнему посещенному окну ...

bind-key @ join-pane -h -s!

ПРИМЕЧАНИЕ. -h заставляет его стечь горизонтально (с вертикальным расщеплением), в отличие от поведения по умолчанию, которое является обратным.

Самое главное, что вы УЧИТЕСЬ, что бы вы ни выбрали для ярлыка. Потому что, если вы просто установите его и забудете, вы окажетесь, когда окажетесь на чужом сервере. И давайте посмотрим правде в глаза, самое главное, что терминальный мультиплексор дает вам надежные сеансы на удаленных серверах.

Это завершает мое преобразование с экрана GNU на Tmux. Я никогда не оглядываюсь назад.

Наслаждайтесь!

ответил Bruno Bronosky 1 FebruaryEurope/MoscowbWed, 01 Feb 2012 20:14:33 +0400000000pmWed, 01 Feb 2012 20:14:33 +040012 2012, 20:14:33
35

Мне кажется, мне нравится то, что я использовал для более удобного перемещения панелей в собственное окно. Я использую

break-pane -t:

Я понял это через эксперименты, но, похоже, он работает очень хорошо. Вы можете легко привязывать клавиатуру или псевдоним, не требуя никаких сценариев.

ответил Joshua K 5 AM00000080000000831 2012, 08:06:08
12

Если вы не хотите вводить идентификатор панели в приглашение, вы также можете использовать

bind-key j "join-pane -s!"

, который присоединится к последней активной панели /окну к текущему окну.

ответил Bernhard T 26 PM00000010000004131 2012, 13:53:41
11

Просматривая другие ответы и просматривая страницу man tmux, я сейчас решил установить следующие привязки:

bind-key S select-window 'join-pane -v -s "%%"'
bind-key V select-window 'join-pane -h -s "%%"'

Это позволит вам интерактивно выбирать окно для соединения и отражает мои строчные s /v привязки для создания новых вертикальных /горизонтальных расщеплений. Если кто-нибудь знает, как выбрать отдельные окна вместо окон, дайте мне знать.

ответил toupeira 30 J0000006Europe/Moscow 2014, 21:38:53
9

По умолчанию:

C - б +

будет сломать активную панель в новом окне и переключиться на нее.

Где C - b является префиксом по умолчанию для .

ответил easl 16 PM00000010000000331 2017, 13:21:03
4

Вам не нужно менять привязки клавиш.

В то время как панель, которую вы хотите переместить, имеет фокус, введите Префикс , затем : join-pane -t: 1, где 1 номер окна назначения находится в одном сеансе. Вы можете перенести его на другой сеанс, добавив его имя, например project: 3. Для меня join-pane tab-autocompletes из j.

Добавьте в команду переключатель -h или -v, чтобы установить ориентацию нового раскола, созданного в пункте назначения, или просто перейдите к нему и Префикс + пробел для изменения.

ответил Walf 5 J000000Tuesday16 2016, 08:58:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132