Как переместить существующую панель в другое окно в tmux, когда у меня несколько окон, и наоборот?
Я иду с экрана , где я могу переключиться на панель, а затем переключать окна, пока не доберусь до нужного; Кажется, tmux этого не позволяет.
Команда для этого есть 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 или любой другой ключ привязки, а затем) ...
Затем вы можете разбить их, используя панель разбивки, которая по умолчанию: Ctrl-B! Если вы хотите привязать его к ярлыку, я НЕ предлагаю переопределять привязку по умолчанию, такую как 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
). Возможно, это было ошибкой в более ранних версияхЯ думаю, что мне нравится то, что я использовал для перемещения панелей в собственное окно. я использую
Я понял это с помощью экспериментов, но, похоже, это работает очень хорошо. Вы можете легко связать или присвоить ей псевдоним, никаких сценариев не требуется.
источник
join-pane
.Если вы не хотите вводить идентификатор панели в приглашение, вы также можете использовать
который присоединит последнюю активную панель / окно к текущему окну.
источник
unknown command: join-pane -s !
с 1.6.bind-key j join-pane -s !
Посмотрев другие ответы и просмотрев справочную страницу tmux, я остановился на следующих привязках:
Это позволит вам в интерактивном режиме выбрать окно для присоединения и отразить мои строчные
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
(aliaslsk
:):источник
Вам не нужно менять привязки клавиш.
В то время как область, которую вы хотите переместить, имеет фокус, введите Prefix, затем
:join-pane -t :1
где1
находится любой номер окна назначения в том же сеансе. Вы можете переместить его в другой сеанс, добавив его имя, напримерproject:3
. Для меняjoin-pane
вкладка-автозаполнение отj
.Добавьте
-h
или-v
переключитесь в команду, чтобы установить ориентацию нового разбиения, созданного в месте назначения, или просто перейдите к нему и нажмите «Префикс +» spaceдля перегруппировки.источник