Przenumerowanie okien w tmux

128

Często kończę z więcej niż dziesięcioma oknami w tmux. Później zamykam niektóre z moich starszych. Czy istnieje sposób na numerację, powiedzmy okno 15, na okno 3 (które już nie istnieje)? Lub do packnich wszystkich ponownie, aby nie było pustych miejsc? Chciałbym to zrobić, ponieważ trudno jest przejść do okien o wyższym numerze, ponieważ nie można tego zrobić Ctrl+B, 15. Muszę użyć, Ctrl+B, waby wyświetlić listę okien, a następnie wpisać literę odpowiadającą oknu, które chcę otworzyć.

Wiem, że mogę zamieniać okna. Na przykład, mógłbym utworzyć nowe okno ( Ctrl+B, c), które otwierałoby się w pustym gnieździe 3. Mogę następnie swapwokno 15 i okno 3, a następnie zamknąć okno 15. Oczywiście jest to żmudne podejście.

Jak zarządzasz wieloma oknami w tmux?

dogbane
źródło

Odpowiedzi:

123

Wygląda na to, że potrzebujesz tego:

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.

Wywołanie movewbez parametrów przenosi bieżące okno do pierwszej wolnej pozycji. movew -rzmieni numerację wszystkich okien jednocześnie.

gelraen
źródło
5
Dla tych, którzy potrzebują bardziej wyraźnej instrukcji: ctrl b :następnie wprowadź move-window -r(gdzie ctrl bjest domyślny klucz prefiksu)
zaznacz
92

tmux 1.7 ma kilka funkcji, które mogą pomóc w ustaleniu i utrzymywaniu numerów okien bez przerw / spakowanych:

  • move-windowKomenda dowiedziałem nową -ropcję, która będzie zmienić numerację wszystkich okien w sesji (zarówno bieżącej sesji lub jeden określony z -topcją).

    Jeśli masz zestaw okien, takich jak {1: A, 4: B, 15: C}, możesz uruchomić, move-window -raby zmienić numerację na {1: A, 2: B, 3: C} (zaczną się od twojego base-index; 1 w tym przykładzie).

  • Gdy renumber-windowsopcja sesji jest włączona, tmux automatycznie przenumeruje okna sesji (jak w przypadku move-window -r) po zamknięciu dowolnego okna.

    Jeśli podoba Ci się to zachowanie, możesz je włączyć w wartości globalnej, aby wszystkie sesje, które nie zostaną zastąpione, automatycznie je włączą:

    set-option -g renumber-windows on
    
Chris Johnsen
źródło
4
Wreszcie! Od wieków szukam tej renumber-windowsopcji! Zawsze denerwowałem mnie, że nowe okna otwierają się po „lewej stronie”, ponieważ niektóre wcześniej zamykałem.
Ory Band
15

Często znajduję się w sytuacji, w której mam przerwy między numerami okien, na przykład sesja z oknami:

1 3 4 8 9 13

Napisałem skrypt tmux, aby zmienić ich kolejność bez zmiany ich kolejności ani aktywowania opcji „renumering-windows”. Wynik:

1 2 3 4 5 6

Umieść następujące dane w pliku .tmux.conf:

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

Naciśnij [PREFIKS] -R, aby zmienić kolejność okien (lub zmienić powiązanie).

Obecnie korzystam z Tmux 1.9a.

Powyższe można zastąpić znacznie prostszym:

bind R                                      \
    move-window -r\;                        \
    display-message "Windows reordered..."
ewangelie
źródło
1
Czy różni się to od uruchamiania „move-window -r”?
PonyEars,
2
Nie, nie jest. Po prostu nie wiedziałem o opcji -r move-window :) nigdy nie jest za późno na naukę, dzięki!
gospes
6

Wszystkie poprzednie odpowiedzi są w porządku, ale oto zwięzłe rozwiązanie, jeśli chcesz od czasu do czasu przetasować niewielką liczbę okien.

move-window -t <number>

przeniesie bieżące okno do nowego numeru okna (który nie musi być już zajęty). Aby zamienić dwa okna, najpierw tymczasowo przenieś jedno okno na nowy numer. np. aby zamienić okna 3 i 5:

move-window -s 3 -t 99
move-window -s 5 -t 3
move-window -s 99 -t 5
Pistacje
źródło
2

Jeśli potrzebujesz tylko systemu Windows, aby zawsze numerować numer, gdy jeden zostanie zabity, możesz użyć tego w .tmux.conf:

set-option -g renumber-windows on
Jojman
źródło