Respostas:
O comando para fazer isso está 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 esses vínculos 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 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+s
e 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: -h
Isso 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.pane
por exemplo, join-pane -s 1.0
a 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 v
para criar novas divisões verticais / horizontais. Se alguém souber selecionar painéis individuais em vez de janelas, avise-me.
-v
e -h
nã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 -h
lá para que você ~/.tmux.conf
atue 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 tmux
comando que essa chave executa é break-pane
(alias:) breakp
conforme implementado cmd-break-pane.c
e 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 :1
em seguida, onde 1
estiver, 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 -h
ou -v
alterne ao comando para definir a orientação da nova divisão criada no destino ou simplesmente vá até ele e Prefixe + spacepara reorganizar.