Rinumerazione delle finestre in tmux


128

Spesso finisco con più di dieci finestre in tmux. Più tardi, chiudo alcuni dei miei più vecchi. C'è un modo per rinumerare, diciamo la finestra 15, alla finestra 3 (che non esiste più)? O a packtutti loro di nuovo, in modo che non ci siano slot vuoti? Mi piacerebbe farlo perché è difficile passare a finestre con un numero più alto, perché non puoi farlo Ctrl+B, 15. Devo usare Ctrl+B, wper elencare le finestre e quindi digitare la lettera corrispondente alla finestra che voglio aprire.

So che posso scambiare Windows. Ad esempio, potrei creare una nuova finestra ( Ctrl+B, c) che si aprirà nello slot vuoto 3. Posso quindi la swapwfinestra 15 e la finestra 3 e quindi chiudere la finestra 15. Ovviamente, questo è un approccio noioso.

Come gestite molte finestre in tmux?

Risposte:


123

Sembra che tu abbia bisogno di questo:

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.

La chiamata movewsenza parametri sposta la finestra corrente nella prima posizione libera. movew -rrinumererà tutte le finestre contemporaneamente.


5
Per coloro che hanno bisogno di un'istruzione più esplicito: ctrl b :quindi immettere move-window -r(dove ctrl bè la chiave prefisso predefinito)
segno

92

tmux 1.7 ha un paio di funzioni che possono aiutare a stabilire e mantenere i numeri delle finestre gapless / impacchettati:

  • Il move-windowcomando ha appreso una nuova -ropzione che rinumererà tutte le finestre in una sessione (o la sessione corrente o una specificata con l' -topzione).

    Se hai un set di finestre come {1: A, 4: B, 15: C}, puoi correre move-window -rper rinumerarle in {1: A, 2: B, 3: C} (inizieranno con il tuo base-index; 1 in questo esempio).

  • Quando l' renumber-windowsopzione di sessione è abilitata, tmux rinumererà automaticamente le finestre di una sessione (come con move-window -r) dopo la chiusura di qualsiasi finestra.

    Se ti piace questo comportamento, puoi attivarlo nel valore globale in modo che tutte le sessioni che per non sovrascriverlo lo abbiano automaticamente abilitato:

    set-option -g renumber-windows on
    

4
Finalmente! Ho cercato questa renumber-windowsopzione per anni! Mi ha sempre infastidito il fatto che nuove finestre si aprano sulla "sinistra" perché ne ho chiuse alcune in precedenza.
Ory Band,

15

Mi trovo spesso in una situazione in cui ho degli spazi tra i numeri delle finestre, ad esempio una sessione con Windows:

1 3 4 8 9 13

Ho scritto uno script tmux per riordinarli senza cambiare il loro rispettivo ordine né attivare l'opzione "rinumerazione di windows". Il risultato:

1 2 3 4 5 6

Inserisci quanto segue nel tuo .tmux.conf:

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

Premi [PREFIX] -R per riordinare le finestre (o modificare l'associazione).

Attualmente sto eseguendo tmux 1.9a.

Quanto sopra può essere sostituito con il molto più semplice:

bind R                                      \
    move-window -r\;                        \
    display-message "Windows reordered..."

1
È diverso dall'esecuzione di "move-window -r"?
PonyEars,

2
No non lo è. Non sapevo dell'opzione -r per spostare-finestra :) mai troppo tardi per imparare, grazie!
Gospes,

6

Le risposte precedenti vanno bene, ma ecco una soluzione concisa se tutto ciò che vuoi è mescolare un piccolo numero di finestre di tanto in tanto.

move-window -t <number>

sposta la finestra corrente su un nuovo numero di finestra (che non deve essere già occupata). Per scambiare due finestre, devi prima spostare temporaneamente una finestra su un nuovo numero. ad esempio per scambiare Windows 3 e 5:

move-window -s 3 -t 99
move-window -s 5 -t 3
move-window -s 99 -t 5

2

Se hai solo bisogno di Windows per rinumerare sempre quando uno viene ucciso, puoi usarlo in .tmux.conf:

set-option -g renumber-windows on
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.