it-swarm-eu.dev

Přečíslování oken v tmuxu

Často skončím s více než deseti okny v tmuxu. Později zavřu některé ze svých starších. Existuje způsob, jak přečíslovat, řekněme okno 15, na okno 3 (které již neexistuje)? Nebo je všechny pack znovu postavit, aby neexistovaly žádné prázdné sloty? Chtěl bych to udělat, protože je obtížné přeskočit na okna s vyšším číslem, protože nemůžete udělat Ctrl+B, 15. Musím použít Ctrl+B, w zobrazte seznam oken a potom zadejte písmeno odpovídající oknu, které chci otevřít.

Vím, že umím vyměnit okna. Mohl bych například vytvořit nové okno (Ctrl+B, c) který by se otevřel v prázdném slotu 3. Mohu pak okno swapw 15 a okno 3 a poté okno 15 zavřít. Je zřejmé, že je to nudný přístup.

Jak spravujete mnoho oken v tmuxu?

138
dogbane

Vypadá to, že to potřebujete:

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.

Volání movew bez parametrů přesune aktuální okno do první volné pozice. movew -r přečísluje všechna okna najednou.

136
gelraen

tmux 1,7 má několik funkcí, které mohou pomoci stanovit a udržovat čísla oken bez mezer/zabalených oken:

  • Příkaz move-window Se naučil novou možnost -r, Která přečísluje všechna okna v relaci (buď aktuální relaci, nebo okno zadané s volbou -t).

    Pokud máte sadu oken jako {1: A, 4: B, 15: C}, můžete spustit move-window -r A přečíslovat je na {1: A, 2: B, 3: C} ( začnou vaším base-index; 1 v tomto příkladu).

  • Když je povolena možnost relace renumber-windows, tmux automaticky přečísluje okna relace (jako u move-window -r) Po zavření jakéhokoli okna.

    Pokud se vám toto chování líbí, můžete jej zapnout v globální hodnotě, aby jej všechny relace, které jej nemají přepsat, automaticky povolily:

    set-option -g renumber-windows on
    
101
Chris Johnsen

Často se ocitnu v situaci, kdy mám mezery mezi čísly oken, například relace s okny:

1 3 4 8 9 13

Napsal jsem skript tmux, abych je mohl změnit, aniž by změnil jejich příslušné pořadí ani aktivoval možnost „přečíslování oken“. Výsledek:

1 2 3 4 5 6

Vložte do svého .tmux.conf následující:

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

Stiskem [PREFIX] -R změníte pořadí oken (nebo změníte vazbu).

V současné době používám tmux 1.9a.

Výše uvedené lze nahradit mnohem jednodušší:

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

Předchozí odpovědi jsou v pořádku, ale zde je stručné řešení, pokud chcete pouze zamíchat malý počet oken znovu a znovu.

move-window -t <number>

přesune aktuální okno na nové číslo okna (které již nesmí být obsazeno). Chcete-li zaměnit dvě okna, nejprve dočasně přesuňte jedno okno na nové číslo. např. zaměnit okna 3 a 5:

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

Pokud potřebujete pouze okna, aby při přečíslování vždy přečíslovali, můžete to použít v .tmux.conf:

set-option -g renumber-windows on
4
jojman