Перерахунок вікон у tmux


128

Я часто закінчую більше ніж десять вікон у tmux. Пізніше я закриваю деяких своїх старших. Чи є спосіб перенумерувати, скажімо, вікно 15, до вікна 3 (яке вже не існує)? Або до packних все знову, щоб не було порожніх прорізів? Я хотів би це зробити, тому що важко перейти до вікон з більшим числом, тому що ти не можеш цього зробити Ctrl+B, 15. Мені потрібно скористатись Ctrl+B, wсписком вікон, а потім набрати букву, відповідну вікну, яке я хочу відкрити.

Я знаю, що можу поміняти вікна. Наприклад, я міг би створити нове вікно ( Ctrl+B, c), яке відкриється в порожньому слоті 3. Потім я можу відкрити swapwвікно 15 і вікно 3, а потім закрити вікно 15. Очевидно, що це нудний підхід.

Як ви керуєте багатьма вікнами в tmux?

Відповіді:


123

Схоже, вам це потрібно:

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.

Виклик movewбез параметрів переміщує поточне вікно на першу вільну позицію. movew -rперейменовує всі вікна відразу.


5
Для тих, хто потребує більш чіткої інструкції: ctrl b :тоді введіть move-window -r(де ctrl bключ за префіксом за замовчуванням)
позначте

92

tmux 1.7 має декілька функцій, які допоможуть встановити та підтримувати безлічі / упаковані номери вікон:

  • move-windowКоманда дізналася новий -rваріант , який буде перенумерувати всі вікна в сеансі (або поточної сесії, або один вказаний з -tопцією).

    Якщо у вас є набір вікон типу {1: A, 4: B, 15: C}, ви можете запустити move-window -rїх перенумеровувати до {1: A, 2: B, 3: C} (вони почнуться з вашого base-index; 1 у цьому прикладі).

  • Коли параметр renumber-windowsсеансу включений, tmux автоматично перенумерує вікна сеансу (як і у випадку move-window -r) після закриття будь-якого вікна.

    Якщо вам подобається така поведінка, ви можете увімкнути її у глобальному значенні, щоб усі сеанси, які не перекривали її, автоматично включали її:

    set-option -g renumber-windows on
    

4
Нарешті! Я шукав цю renumber-windowsопцію віками! Завжди клопотав, що нові вікна відкриваються зліва, тому що я закриваю деякі раніше.
Ory Band

15

Я часто опиняюся в ситуації, коли у мене є проміжки між номерами вікон, наприклад, сеанс з Windows:

1 3 4 8 9 13

Я написав tmux-скрипт, щоб змінити їх порядок, не змінюючи відповідний порядок і не активувавши параметр 'перенумерування-windows'. Результат:

1 2 3 4 5 6

Помістіть у своєму .tmux.conf наступне:

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

Натисніть [PREFIX] -R, щоб впорядкувати вікна (або змінити прив’язку).

Зараз я працюю на tmux 1.9a.

Вищезазначене можна замінити набагато простішим:

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

1
Чи відрізняється це від запуску "move-window -r"?
PonyEars

2
Ні, це не. Я просто не знав про варіант -r для переміщення вікна :) ніколи не пізно вчитися, THX!
Євангелія

6

Попередні відповіді - це все добре, але ось стисле рішення, якщо все, що вам потрібно, - це переміщати невелику кількість вікон раз і знову.

move-window -t <number>

перемістить поточне вікно на новий номер вікна (яке вже не повинно бути зайнято). Щоб змінити два вікна, ви тимчасово спочатку перемістіть одне вікно на новий номер. наприклад, поміняти вікна 3 і 5:

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

2

Якщо вам просто потрібні вікна, щоб завжди перенумерувати, коли когось убивають, ви можете використовувати це у .tmux.conf:

set-option -g renumber-windows on
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.