Como movo um painel existente para outra janela no tmux quando tenho várias janelas e vice-versa?
Estou vindo da tela , onde posso mudar para o painel e depois mudar de janela até chegar ao que eu quero; O tmux parece não permitir isso.
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) ...
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 ...
Como alternativa, ter um seletor interativo ...
Como alternativa, para ingressar sempre na janela visitada mais recentemente ...
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!
fonte
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 anterioresAcho que gosto mais do que tenho usado para mover os painéis para a própria janela. eu uso
Eu descobri isso através da experimentação, mas parece funcionar muito bem. Você pode keybind ou alias facilmente, sem a necessidade de scripts.
fonte
join-pane
.Se você não quiser digitar o identificador do painel em um prompt, também poderá usar
que unirá o último painel / janela ativo à janela atual.
fonte
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:
Isso permitirá que você selecione interativamente a janela para ingressar e espelhe minhas ligações
s
/ letras minúsculasv
para criar novas divisões verticais / horizontais. Se alguém souber selecionar painéis individuais em vez de janelas, avise-me.fonte
-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.Ligação de chave
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 .
Detalhes
O
tmux
comando que essa chave executa ébreak-pane
(alias:)breakp
conforme implementadocmd-break-pane.c
e vinculado como padrão em key-bindings.c, como visto na saída do comandolist-keys
(aliaslsk
:):fonte
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, onde1
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 comoproject:3
. Para mimjoin-pane
, os preenchimentos automáticos de guias são dej
.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.fonte