Respostas:
O comando para fazer isso está join-paneno 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 esses vínculos no meu .tmux.confpara 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 o une à corrente, o segundo faz o inverso.
Você pode recarregar sua sessão do tmux executando o seguinte dentro da sessão:
$ tmux source-file ~/.tmux.conf
Prefix+se digite o nome da janela no prompt para enviar o painel para que a janela ...
o painel de junção é a resposta. Eu também estava tendo problemas com minhas tentativas de usá-lo com base na documentação do tmux. Descobri que as opções -t e -s parecem aceitar a janela [session]: e não a janela [session:]. Ou seja, especificar a sessão é opcional, mas incluir: é 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 sua chave de ligação, seguida por) ...
:join-pane -s :1
Você pode quebrá-los separadamente com o painel de interrupção, que por padrão é: Ctrl-B! Se você deseja vinculá-lo a um atalho, sugiro NÃO substituir um vínculo padrão como s, porque no caminho você procurará na Internet por uma resposta que envolva a escolha da sessão e ela não funcionará no seu sistema. Observe que o painel de interrupção está vinculado a! e @ está próximo a ele e não está vinculado a nada por padrão. Por esse motivo, sugiro esta ligação ...
bind-key @ command-prompt -p "create pane from:" "join-pane -s ':%%'"
Como alternativa, ter um seletor interativo ...
bind-key @ choose-window 'join-pane -h -s "%%"'
Como alternativa, para ingressar sempre na janela visitada mais recentemente ...
bind-key @ join-pane -h -s !
NOTA: -hIsso faz com que empilhe os painéis horizontalmente (com uma divisão vertical) em oposição ao comportamento padrão, que é o inverso.
O mais importante é que você APRENDA o que você escolher como atalho. Porque se você apenas configurá-lo e esquecê-lo, você será enganado quando se encontrar em um servidor estrangeiro. E, convenhamos, 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.
Desfrutar!
window.panepor exemplo, join-pane -s 1.0a mover o painel 0 na janela 1 para a janela atual. Mais detalhes em maciej.lasyk.info/2014/Nov/19/tmux-join-pane
:aparentemente não é mais necessário (por exemplo, apenas faça :join-pane -s 1). Talvez tenha sido um erro em versões anteriores
Acho que gosto mais do que tenho usado para mover os painéis para a própria janela. eu uso
break-pane -t :
Eu descobri isso através da experimentação, mas parece funcionar muito bem. Você pode keybind ou alias facilmente, sem a necessidade de scripts.
join-pane.
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.
unknown command: join-pane -s !com o 1.6.
bind-key j join-pane -s !
Depois de examinar as outras respostas e ler a página de manual do tmux, decidi por enquanto 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 interativamente a janela para ingressar e espelhe minhas ligações s/ letras minúsculas vpara criar novas divisões verticais / horizontais. Se alguém souber selecionar painéis individuais em vez de janelas, avise-me.
-ve -hnão criam "divisões" verticais e horizontais, respectivamente. Eles criam " painéis empilhados " verticais e horizontais, respectivamente. (Isso significa que os painéis empilhados verticalmente têm uma divisão horizontal.) Portanto, você precisa treinar seu cérebro dessa maneira. Também -vé o padrão, então eu deixaria isso de fora e só o colocaria -hlá para que você ~/.tmux.confatue como uma folha de dicas para você olhar.
Por padrão, Ctrl+ b, quebraria o painel ativo em uma nova janela e! passaria para ele.
Onde Ctrl+ bé o prefixo padrão do tmux .
O tmuxcomando que essa chave executa é break-pane(alias:) breakpconforme implementado cmd-break-pane.ce vinculado como padrão em key-bindings.c, como visto na saída do comando list-keys(alias lsk:):
bind-key -T prefix ! break-pane
Você não precisa alterar suas associações de teclas.
Enquanto o painel que você deseja mover estiver focado, digite Prefixo e, :join-pane -t :1em seguida, onde 1estiver, qualquer que seja o número da janela de destino na mesma sessão. Você pode movê-lo para outra sessão, acrescentando o nome como project:3. Para mim join-pane, os preenchimentos automáticos de guias são de j.
Adicione um -hou -valterne ao comando para definir a orientação da nova divisão criada no destino ou simplesmente vá até ele e Prefixe + spacepara reorganizar.