32

Как я могу получить окно из совершенно другой сессии tmux и прикрепить его как горизонтальное / вертикальное разделение к текущему окну?

2 ответа2

45

Звучит так, как будто вы ищете объединенную панель. Технически для второй части вашего вопроса вы хотите присоединить панель к текущему окну, а не к полному окну из другого сеанса, поскольку это может включать несколько панелей.

Вот пример. Допустим, вы находитесь в сеансе 0, окне 4 и в сеансе 2, для которого требуется панель 1 окна 3. В приглашении tmux (по умолчанию ctrl+b : :)

join-pane -s 2:3.1

Это переместит панель 1 из окна 3, сеанс 2 (-s является исходным окном и принимает формат сеанса:window.pane) в текущий сеанс (сеанс 0).

Ниже приведены полные документы для join-pane, которые вы можете получить на man-странице tmux. Самым запутывающим моментом для меня при чтении документов было выяснение формата, который ожидался для src-pane с указанием номеров сессий, окон и панелей (session:window.pane в приведенном выше примере). Вы также можете назвать свои сеансы и окна и использовать эти имена вместо номеров индексов.

 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.
16

Если вы пытаетесь объединить панели из одного сеанса, вы инстинктивно захотите пропустить «session:» в команде. Это не удастся. Похоже, что переключатели -s и -t в join-pane принимают аргумент в виде [session]:window [.pane] вместо [session:] window [.pane]

То есть, сессия необязательна, а: обязательна. Это глупо Было бы равносильно тому, что браузеры требуют http://google.com:/ в качестве сокращенной версии http://google.com:80/ и сообщают об ошибке http://google.com/ o_O

С Ctrl-B! разбивает текущую панель на отдельное окно (что противоположно тому, что мы хотим сделать), и ctrl-b @ (что рядом!) по умолчанию не связан (то есть вы ничего не перезаписываете). Я предлагаю создать этот ярлык ...

bind-key @ command-prompt -p "create pane from:"  "join-pane -s ':%%'"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .