Mover um painel tmux para outra sessão


43

Antes de fazer isso , é possível mover um comando em execução em um painel para outra sessão do tmux?

Respostas:


68

Sim, é muito fácil, use o move-panecomando tmux. Para mais informações, execute

man tmux | less -I '+/mOVE-pane'

A parte complicada é apenas saber como o tmux faz referência a sessões, janelas e painéis nos comandos para manipular painéis etc.

Passo um

Mover para o painel que você deseja mover para a outra sessão

Passo dois

Obtenha o nome da sessão de destino executando <prefix>s.

No meu sistema que produz:

 (0) + 0: 8 windows (attached)  
 (1) + 1: 1 windows 
       ^
       |
    This is the session name. It could be different 
    on your system and it could be a word (not just a number).

Etapa 3 - executar o comando

<prefix>:move-pane -t <session_name>:<window number>
                      ^^^^^^^^^^^^^^ the name from above goes in here

Então, no meu sistema, mudei para o painel com o processo em execução, executei

<prefix>:move-pane -t 1:1

e o painel com o processo movido para a janela um da sessão 1.

Ele é inserido como uma divisão, portanto, normalmente você deseja executar a janela na outra sessão como uma janela descartável.

Nota: parece que a janela de destino precisa existir, caso contrário, o move-panecomando emitirá um erro.

Para obter mais informações sobre o formato para especificar sessões, janelas e painéis dentro de um comando tmux, consulte a seção COMMANDSem man tmux.


12
Há um procedimento mais simples: marque o painel com <prefix>m, vá para a janela de destino <prefix>we mova o painel marcado para lá join-pane.
Dan Aloni 31/01

7

Não posso comentar, por isso vou colocá-lo aqui: para tmux 2.1-3build1 ~ preciso, o comando deve ser:

<prefix>:move-pane -t session_name:window_number

- você precisa de um nome " -t" antes da sessão (não necessariamente um número), e a janela com um determinado número deve existir.

Todo o resto é como descrito por the_velour_fog em sua resposta .

PS Se você digitar apenas um session_namesem window_numbero seguinte:

<prefix>:move-pane -t session_name:,

seu painel será movido para a janela atual da sessão de destino (e essa janela será dividida).

PPS Se você deseja apenas mover sua janela (e não apenas seu painel), há uma boa resposta sobre como mover a janela entre clientes tmux :

<prefix>:move-window [-d] [-s src-window] [-t dst-window]

(alias: movew)

onde src-windowe dst-windowtem o formulário session:window.pane.


-1

Tenho duas sessões em execução, cada uma no seu próprio iTerm. Tudo o que eu precisava fazer para mover o painel de uma sessão para outra foi

selecione o painel

<leader>s <session>

onde <session>está um número entre colchetes

tmux 2.7


Na verdade, isso não move o painel de uma sessão para outra. Isso apenas altera a sessão que você está visualizando no terminal atual. É equivalente a desconectar e conectar-se à outra sessão. Quero realmente poder mover painéis entre sessões com vários outros painéis abertos.
HEGX64
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.