Movendo o painel tmux para a janela

219

Como faço para mover um painel existente para outra janela em tmux quando tenho várias janelas e vice-versa?

Estou vindo da tela , onde posso alternar para o painel e alternar as janelas até chegar ao que desejo; tmux não parece permitir isso.

    
por mrlanrat 03.06.2011 / 05:43

7 respostas

201

O comando para fazer isso é join-pane no 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.

Para simplificar isso, eu tenho essas ligações no meu .tmux.conf para isso:

# 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 '%%'"

O primeiro pega o painel da janela de destino e junta-se ao atual, o segundo faz o inverso.

Você pode então recarregar sua sessão do tmux executando o seguinte a partir da sessão:

$ tmux source-file ~/.tmux.conf
    
por 03.06.2011 / 05:49
139

join-pane é a resposta. Eu também estava tendo problemas com minhas tentativas de usá-lo com base na documentação do tmux. Descobri que os switches -t e -s parecem aceitar a janela [session]: e não a janela [session:]. Isso quer dizer que especificar a sessão é opcional, mas incluindo o: é obrigatório. (Estou usando o tmux 1.5)

Portanto, para adicionar um painel à janela atual e colocar a janela 1 no painel, o comando seria (Ctrl-B ou qualquer que seja a sua chave de ligação, seguida por) ...

:join-pane -s :1

Você pode então quebrá-los com o break-pane, que por padrão é: Ctrl-B! Se você quiser ligá-lo a um atalho, sugiro que você NÃO substitua uma ligação padrão como s, porque no futuro você procurará na internet uma resposta que envolva a escolha de sessão e não funcionará no seu sistema. Observe que o break-pane está ligado a! e @ está ao lado e não está vinculado a nada por padrão. Por essa razão eu sugiro esta ligação ...

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

Como alternativa, para ter um seletor interativo ...

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

Como alternativa, para participar sempre da janela visitada mais recentemente ...

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

NOTA: O -h faz com que ele empilhe os painéis horizontalmente (com uma divisão vertical), ao contrário do comportamento padrão, que é o inverso.

A coisa mais importante é que você aprenda tudo o que você escolher para atalho. Porque se você apenas configurá-lo e esquecê-lo, você será poupado quando se encontrar em um servidor externo. E vamos encarar, a coisa mais importante que um multiplexador de terminal oferece é sessões confiáveis em servidores remotos.

Isso completa minha conversão do GNU Screen para o Tmux. Eu nunca vou olhar para trás.

Aproveite!

    
por 01.02.2012 / 17:14
36

Acho que gosto mais do que venho usando para mover os painéis para a janela deles. Eu uso

break-pane -t :

Eu descobri através da experimentação, mas parece funcionar muito bem. Você pode digitar keybind ou alias facilmente, sem precisar de scripts.

    
por 05.08.2012 / 06:06
12

Se você não quiser digitar o identificador do painel em um prompt, também poderá usar

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

que unirá o último painel / janela ativo à janela atual.

    
por 26.08.2012 / 11:53
11

Depois de examinar as outras respostas e ler atentamente a man page do tmux, resolvi as seguintes ligações:

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

Isso permitirá que você selecione a janela para participar interativamente e espelha minhas minúsculas s / v para criar novas divisões verticais / horizontais. Se alguém souber como selecionar painéis individuais em vez de janelas, avise-nos.

    
por 30.06.2014 / 19:38
10

Por padrão:

C - b + !

quebraria o painel ativo em uma nova janela e mudaria para ele.

Onde C - b é o prefixo padrão para .

    
por 16.08.2017 / 12:21
4

Você não precisa alterar suas combinações de teclas.

Enquanto o painel que você deseja mover tem foco, digite Prefixo e :join-pane -t :1 onde 1 é o número da janela de destino na mesma sessão. Você pode movê-lo para outra sessão, colocando seu nome como project:3 . Para mim join-pane tab-autocompletes de j .

Adicione uma opção -h ou -v ao comando para definir a orientação da nova divisão criada no destino ou simplesmente vá até ela e Prefixo + espaço para reorganizar.

    
por 05.07.2016 / 07:58

Tags