Ответы:
Команда для этого есть join-pane
в tmux 1.4.
join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane] (alias: joinp) Like split-window, but instead of splitting dst-pane and creating a new pane, split it and move src-pane into the space. This can be used to reverse break-pane.
Чтобы упростить это, у меня .tmux.conf
для этого есть следующие привязки :
# pane movement
bind-key j command-prompt -p "join pane from:" "join-pane -s '%%'"
bind-key s command-prompt -p "send pane to:" "join-pane -t '%%'"
Первый захватывает панель из целевого окна и присоединяет ее к текущей, второй делает обратное.
Затем вы можете перезагрузить сеанс tmux, выполнив следующее из этого сеанса:
$ tmux source-file ~/.tmux.conf
Prefix+s
и введите имя окна в
Панель соединения - это ответ. У меня тоже были проблемы с попытками использовать его, основываясь на документации tmux. Я обнаружил, что ключи -t и -s, похоже, принимают [session]: window, а не [session:] window. То есть указание сеанса является необязательным, но в том числе: является обязательным. (Я использую tmux 1.5)
Поэтому, чтобы добавить панель к текущему окну и поместить окно 1 в панель, команда должна быть (Ctrl-B или любой другой ключ привязки, а затем) ...
:join-pane -s :1
Затем вы можете разбить их, используя панель разбивки, которая по умолчанию: Ctrl-B! Если вы хотите привязать его к ярлыку, я НЕ предлагаю переопределять привязку по умолчанию, такую как s, потому что в будущем вы будете искать в Интернете ответ, который включает выбор сеанса, и он не будет работать в вашей системе. Обратите внимание, что панель разбивки обязана! и @ находится рядом с ним и по умолчанию не привязан ни к чему. По этой причине я предлагаю этот обязательный ...
bind-key @ command-prompt -p "create pane from:" "join-pane -s ':%%'"
Альтернативно, чтобы иметь интерактивный выбор ...
bind-key @ choose-window 'join-pane -h -s "%%"'
Альтернативно, чтобы всегда присоединяться к последнему посещенному окну ...
bind-key @ join-pane -h -s !
ПРИМЕЧАНИЕ. Это -h
приводит к тому, что панели располагаются горизонтально (с вертикальным разделением), в отличие от поведения по умолчанию, которое является обратным.
Самое главное, что вы узнаете, что вы выбрали для ярлыка. Потому что, если вы просто установите его и забудете, вы будете раздражены, когда окажетесь на чужом сервере. И давайте посмотрим правде в глаза, самое важное, что дает вам терминальный мультиплексор - это надежные сеансы на удаленных серверах.
На этом мое преобразование из GNU Screen в Tmux завершено. Я никогда не буду оглядываться назад.
Наслаждайтесь!
window.pane
например, join-pane -s 1.0
переместить панель 0 в окне 1 в текущее окно. Более подробная информация на maciej.lasyk.info/2014/Nov/19/tmux-join-pane
:
очевидно, больше не требуется (например, просто делайте :join-pane -s 1
). Возможно, это было ошибкой в более ранних версиях
Я думаю, что мне нравится то, что я использовал для перемещения панелей в собственное окно. я использую
break-pane -t :
Я понял это с помощью экспериментов, но, похоже, это работает очень хорошо. Вы можете легко связать или присвоить ей псевдоним, никаких сценариев не требуется.
join-pane
.
Если вы не хотите вводить идентификатор панели в приглашение, вы также можете использовать
bind-key j "join-pane -s !"
который присоединит последнюю активную панель / окно к текущему окну.
unknown command: join-pane -s !
с 1.6.
bind-key j join-pane -s !
Посмотрев другие ответы и просмотрев справочную страницу tmux, я остановился на следующих привязках:
bind-key S choose-window 'join-pane -v -s "%%"'
bind-key V choose-window 'join-pane -h -s "%%"'
Это позволит вам в интерактивном режиме выбрать окно для присоединения и отразить мои строчные s
/ v
привязки для создания новых вертикальных / горизонтальных разбиений. Если кто-нибудь знает, как выбрать отдельные панели вместо окон, дайте мне знать.
-v
и -h
не создают вертикальные и горизонтальные "расщепления" соответственно. Они создают вертикальные и горизонтальные « сложенные панели » соответственно. (Это означает, что вертикально расположенные панели имеют горизонтальное разделение.) Таким образом, вы должны тренировать свой мозг таким образом. Кроме того, -v
это значение по умолчанию, поэтому я бы оставил это и оставил только -h
там, чтобы вы ~/.tmux.conf
действовали как шпаргалка для просмотра.
По умолчанию, Ctrl+ b, !будет нарушать активную панель в новое окно и переключиться на него.
Где Ctrl+ bэто префикс по умолчанию для tmux .
Команда, которую tmux
выполняет этот ключ, break-pane
(alias:) breakp
реализована cmd-break-pane.c
в key-bindings.c и привязана к нему по умолчанию, как показано в выводе команды list-keys
(alias lsk
:):
bind-key -T prefix ! break-pane
Вам не нужно менять привязки клавиш.
В то время как область, которую вы хотите переместить, имеет фокус, введите Prefix, затем :join-pane -t :1
где 1
находится любой номер окна назначения в том же сеансе. Вы можете переместить его в другой сеанс, добавив его имя, например project:3
. Для меня join-pane
вкладка-автозаполнение от j
.
Добавьте -h
или -v
переключитесь в команду, чтобы установить ориентацию нового разбиения, созданного в месте назначения, или просто перейдите к нему и нажмите «Префикс +» spaceдля перегруппировки.