Renumerando janelas no tmux

128

Freqüentemente, acabo com mais de dez janelas no tmux. Mais tarde, fecho alguns dos meus mais antigos. Existe uma maneira de renumerar, digamos a janela 15, para a janela 3 (que não existe mais)? Ou para packtodos eles novamente, para que não haja slots vazios? Eu gostaria de fazer isso porque é difícil pular para janelas com números mais altos, porque você não pode fazer Ctrl+B, 15. Eu tenho que usar Ctrl+B, wpara listar as janelas e digite a letra correspondente à janela que eu quero abrir.

Eu sei que posso trocar janelas. Por exemplo, eu poderia criar uma nova janela ( Ctrl+B, c) que abriria no slot vazio 3. Eu posso então a swapwjanela 15 e a janela 3 e depois fechar a janela 15. Obviamente, essa é uma abordagem tediosa.

Como você gerencia muitas janelas no tmux?

dogbane
fonte

Respostas:

123

Parece que você precisa disso:

move-window [-rdk] [-s src-window] [-t dst-window]
              (alias: movew)
        This is similar to link-window, except the window at src-window
        is moved to dst-window.  With -r, all windows in the session are
        renumbered in sequential order, respecting the base-index option.

Chamar movewsem parâmetros move a janela atual para a primeira posição livre. movew -rrenumerará todas as janelas de uma vez.

gelraen
fonte
5
Para aqueles que precisam de uma instrução mais explícita: em ctrl b :seguida, digite move-window -r(onde ctrl bestá a chave de prefixo padrão)
marque
92

O tmux 1.7 possui alguns recursos que podem ajudar a estabelecer e manter números de janelas sem intervalos / compactados:

  • O move-windowcomando aprendeu uma nova -ropção que renumerará todas as janelas em uma sessão (a sessão atual ou a especificada com a -topção).

    Se você tiver um conjunto de janelas como {1: A, 4: B, 15: C}, poderá executá move-window -r-las para renumerá-las para {1: A, 2: B, 3: C} (elas começarão com o seu base-index; 1 neste exemplo).

  • Quando a renumber-windowsopção de sessão estiver ativada, o tmux renumerará automaticamente as janelas de uma sessão (como em move-window -r) após qualquer janela ser fechada.

    Se você gosta desse comportamento, é possível ativá-lo no valor global para que todas as sessões que não o substituam automaticamente o habilitem:

    set-option -g renumber-windows on
    
Chris Johnsen
fonte
4
Finalmente! Eu tenho procurado por esta renumber-windowsopção por idades! Sempre me incomodava que novas janelas se abrissem à "esquerda" porque eu fechei algumas antes.
Ory Banda
15

Muitas vezes me encontro em uma situação em que há lacunas entre os números das janelas, por exemplo, uma sessão com janelas:

1 3 4 8 9 13

Eu escrevi um script tmux para reordená-los sem alterar a ordem respectiva nem ativar a opção 'renumerar janelas'. O resultado:

1 2 3 4 5 6

Coloque o seguinte em seu arquivo .tmux.conf:

bind R                                      \
    set -g renumber-windows on\;            \
    new-window\; kill-window\;              \
    set -g renumber-windows off\;           \
    display-message "Windows reordered..."

Pressione [PREFIX] -R para reordenar as janelas (ou alterar a encadernação).

Atualmente, estou executando o tmux 1.9a.

O acima pode ser substituído pelo muito mais simples:

bind R                                      \
    move-window -r\;                        \
    display-message "Windows reordered..."
evangelhos
fonte
1
Isso é diferente de executar "move-window -r"?
PonyEars
2
Não não é. Eu simplesmente não sabia sobre a opção -r para mover a janela :) nunca é tarde para aprender, thx!
gospes 25/08/14
6

As respostas anteriores são boas, mas aqui está uma solução concisa, se tudo o que você deseja é embaralhar um pequeno número de janelas de vez em quando.

move-window -t <number>

moverá a janela atual para um novo número de janela (que ainda não deve estar ocupado). Para trocar duas janelas, mova temporariamente uma janela para um novo número primeiro. por exemplo, para trocar as janelas 3 e 5:

move-window -s 3 -t 99
move-window -s 5 -t 3
move-window -s 99 -t 5
Pistos
fonte
2

Se você só precisa que o Windows renumere sempre quando um é morto, você pode usá-lo em .tmux.conf:

set-option -g renumber-windows on
jojman
fonte