Em screen
, posso apenas digitar C-a :number 0
para mover uma janela para o topo da lista de janelas e empurrar todas as outras janelas para baixo uma. Para que serve a sequência de comandos equivalente tmux
? Eu olhei para a página de manual, mas acho isso confuso neste ponto.
413
C-b
,.
permite renumerar uma janela.swap-window -s number
eswap-window -t number
para trocar a janela atual, veja minha resposta aqui .Respostas:
O
swap-window
comando está mais próximo do que você deseja."Prefixo:" (ou seja , Ctrl+ B, :por padrão) leva você ao prompt de comando do tmux. Lá você entra:
para permitir que a janela número 3 e a janela número 1 troquem de posição.
Para trocar a janela atual pela janela superior, faça:
No caso improvável de não ter janela no índice 0, faça:
(se o índice base for 0, como é por padrão).
Você pode vincular esse comando a uma chave (T para "top" por exemplo) adicionando o seguinte ao seu
~/.tmux.conf
:fonte
move-window
só funciona se não houver outra janela no índice fornecido. Portanto, na maioria dos casos,move-window -t 0
não funcionará, pois geralmente já haverá outra janela nessa posição.movew
.bind-key L swap-window -t -1
para torná-lo a última janela.swapw -s number
eswapw -t number
para trocar a janela atual, veja minha resposta aqui .Adicionando à resposta de Gareth, você pode usar as seguintes teclas de atalho
Pressionar Ctrl + Shift + Esquerda (moverá a janela atual para a esquerda. Igualmente à direita. Não há necessidade de usar o modificador (Cb).
fonte
-1
e+1
ajuda a resolver o problema dos índices ocupados. O tmux mudará as outras janelas para você e o evento terminará automaticamente até o fim / começo. Esta é a melhor resposta.bind-key S-Left swap-window -t -1
, para que eu possa fazer <prefixo> shift + arrow, pois não gosto de bagunçar as teclas para programas.bind-key -n C-H swap-window -t -1
bind-key -n C-S-Left swap-window -t -1
no entanto, funciona ok quando se utiliza o prefixo como sugerido por @MatthewMitchellO tmux equivalente a
:number 42
é:move-window -t 42
.fonte
:move-window
é equivalente ao da tela . troca se o destino existe, falha nesse caso. Você tem que escolher entre e:number
:number
:move-window
:move-window
:swap-window
Renumero janelas como esta:
Ctrl+ b,
.
,222
tornaria a
tmux
janela atual (todos os painéis) número 222.Relacionado: Quando estou mexendo nas coisas, tenho tendência a querer fazer
Ctrl+b
:new-session -d -s "reading"
e de lá eu também pode usar Ctrl+ b,
.
,reading
para mover a janela atual (todos os painéis de uma vez) até a sessão de leitura. Você pode navegar entre as sessões com Ctrl+ b,s
a maneira que você navegue dentro de sessão usando Ctrl+ b,w
.HTH
fonte
Você pode implementar um equivalente ao comando
screen
snumber
usando um script de shell externo que escolha entreswap-window
emove-window
. Você pode vinculá-lo a uma chave dessa maneira:~/.tmux.number.sh
:fonte
-F
opção que não é aceita pela minha versão do tmux.Usando swap-window para mover para qualquer id: [mais próximo da tela: número]
[m para mover -> pressione prefixo-m e digite digamos 3. .para renumerar a janela para 3]
fonte
Como a resposta de Ashish Ariga não funciona na versão 1.9a e abaixo. Eu uso
<
e>
para trocar a janela para esquerda e direita, respectivamente, adicionando a linha abaixo a.tmux.conf
.fonte
A solução mais simples de
man
, é usar as ligações padrão:fonte
Para aqueles que usam
byobu
como wrapper para tmux, você pode trocar a janela atual pela janela anterior ou seguinte por:A ligação de chave definida por
byobu
para essas chaves pode ser de interesse:fonte
A abordagem que utilizo combina um pouco da resposta de Ashish com a de partes; Eu tenho as setas alt-esquerda e direita ligadas a um pequeno texto explicativo rápido que move a janela uma para a esquerda ou direita, a menos que seja a primeira ou a última janela, respeitosamente. Eu fiz isso porque, quando você emite uma troca +1 na última janela (ou troca -1 na primeira janela), ela ainda será trocada, em vez de retornar novamente como você pode esperar:
Torna-se
Ao invés de
Portanto, os comandos que eu uso param de funcionar quando a janela atinge a borda da lista:
Isso pode ser facilmente combinado com índice base e renumerar janelas para ter uma lista de janelas que começam com um número arbitrário e nunca apresentam lacunas.
Se você estiver usando o índice-base 1 como eu e nunca achar que ultrapassará 999 janelas, poderá usar um pequeno truque para fazê-lo funcionar corretamente, embora os comandos inchem um pouco:
Isso funciona movendo temporariamente a última janela para o índice-0 não utilizado e, em seguida, chamando -move-window -r para renumerá-los a partir de 1 novamente. Funciona de maneira semelhante ao mover a primeira janela para o final; escolhendo um número enorme que você nunca usará, garante que, quando o movimento-janela -r for acionado novamente, tudo será numerado como você esperaria. Se você está se perguntando sobre o refresh-client -S , isso é necessário porque, às vezes, enquanto a reordenação da janela de movimentação funcionará corretamente, a barra de status não será atualizada até que novas alterações sejam feitas. Ao forçar uma atualização apenas da barra de status (-S), você evita isso.
O único problema que posso encontrar com essa abordagem é que a janela de troca alterará implicitamente a última janela usada para a que você trocou. Portanto, se você estiver na janela nº 1, alterne para a janela quatro e mova-a para trás uma, você verá que sua última janela usada é o novo nº 4 (anteriormente nº 3) em vez de nº 1. Não parece haver uma maneira de contornar isso.
fonte
Você pode usar
base-index
para alterar o número inicial das janelas. se você definirbase-index
como1
,move-window -r
renumerará todas as janelas a partir de1
, liberando assim0
uma janela para o slot:Quando terminar, você poderá redefinir
base-index
para0
se quiser usarmove-window -r
mais tarde sem mover a janela em0
fonte
O tmux-pain-control fornece
ctrl-b >
ectrl-b <
move a janela focada para a direita e esquerda, contornando.fonte
Ambos
swap-window -s 5
eswap-window -t 5
trocam a janela atual pela janela 5, mas com semânticas diferentes.swap-window -s 5
swap-window -t 5
o
number
inswap-window -s number
e-t number
poderia ser tanto absoluto , por exemplo, 5, e relativo , por exemplo, -1, +2.O PS abaixo é um trecho da tmux statusline que ilustra o efeito de
swap-window -s 5
recente:
[0] 0:vim- 1:mpl 2:py2* 3:numpy 4:plot 5:mc
agora depois
last-window
:[0] 0:vim* 1:mpl 2:py2- 3:numpy 4:plot 5:mc
depois de
swapw -s 5
:[0] 0:mc* 1:mpl 2:py2- 3:numpy 4:plot 5:vim
outro
swapw -s 5
:[0] 0:vim* 1:mpl 2:py2- 3:numpy 4:plot 5:mc
outro
last-window
:[0] 0:vim- 1:mpl 2:py2* 3:numpy 4:plot 5:mc
fonte
Na janela tmux, tente o seguinte para trocar a janela 0 por 1:
$ tmux swap-window -d -s 0 -t 1
fonte
Eu acho que você deseja vincular uma nova combinação de teclas ao comando 'escolher janela'.
Sei que você disse que já leu a página de manual, mas deve voltar a ela. você precisa modificar o arquivo ~ / .tmux.conf para adicionar um comando bind-key.
Especificamente, veja a página 4 do seguinte.
página de manual do tmux
fonte
choose-window
parece não mover a janela atual para uma nova posição.choose-window
já está vinculado aC-B w
.Este é o método que eu uso. Você ainda não pode mover uma janela para um índice ocupado, mas pode movê-la para um índice mais alto (não utilizado) e reorganizar o espaço onde estava o índice anterior.
Digamos que você tenha 3 janelas e queira adicionar uma quarta, mas no local em que 3 estavam anteriormente.
Antes de adicionar uma nova janela: Prefixo do Tmux então. irá abrir o comando mover. Digite 4 e agora o índice 3 se tornará 4; em seguida, basta adicionar outra janela e ele estará no índice 3 e sua janela antiga ainda estará no índice 4.
fonte
Primeiro, abra o comando tmux, pressione e libere:
E para alterar a janela real para a direita (em ordem circular), basta fazer:
Para alterar a janela real para a esquerda:
SHIFT
quando pressionar}
ou{
.fonte
Pelo que vale a pena:
Eu cortei esse script juntos para poder ordenar todas as janelas em uma "TUI". Ele lista todas as suas janelas em um arquivo temporário, abre-o com o editor padrão (assume que você configurou $ EDITOR). Depois disso, você pode reordenar as linhas e depois de salvar e fechar o arquivo, as janelas são reordenadas de acordo. (Isso é semelhante a solicitar confirmações ao fazer
git rebase -i
)Provavelmente poderia ser melhorado muito, em particular:
NOTA : Você pode ser movido para outra janela após executar o comando.
Um gif dele em ação (github)
fonte
Nenhuma das respostas aqui me satisfez, então escrevi um script que (mais ou menos) imita o
screen
comportamento de mover a janelatmux
.Ele detecta se o número da janela de destino é menor que o menor ou maior que o maior e, nesse caso, desloca todas as outras janelas para a direita ou esquerda (respectivamente) e as renomeia para 1-N incrementalmente . Isso é feito com o
move-window
comandoSe o número da janela estiver entre os menores / os maiores números (ou seja, presumivelmente, corresponde a um número de janela existente), apenas os troque com o
swap-window
comandoAqui está o script:
Em seguida, basta adicionar esta ligação de chave simples ao seu
.tmux.conf
:Nota : Para imitar perfeitamente o
screen
comportamento de troca de janelas, acredito que, quando você move uma janela para um número de janela existente , ele deve substituir a janela e todas as outras janelas são empurradas para a direita . Seria bastante simples modificar esse script para fazer isso.fonte
Não há necessidade da linha de comando (que é Ctrl+ be então :)
Basta mover suas janelas com
Ctrl+ b+:
digite o novo número da janela (gratuita) e pressione Enter
Se agora houver um número de janela livre, use Ctrl+ b+ .para renumerar uma janela.
(Dica: nomeie suas janelas com Ctrl+ b+ ,se você não souber qual é qual)
fonte