Різниця між глобальними, серверними, сеансовими та віконними параметрами


19

У посібнику tmux обговорюються різні типи параметрів, наприклад глобальні параметри , параметри сервера тощо. Питання Де типовий файл конфігурації tmux? також відноситься до деяких із цих типів конфігурації.

Деякі з цих типів легко зрозуміти: параметри вікон стосуються речей, які стосуються лише одного вікна. Наприклад, "дозволити перейменувати": windows має імена, сеанси - ні. Однак для інших типів відмінність не дуже чітка.

Яка різниця між

  • параметри сервера ( set-option -s),
  • параметри глобальної сесії ( set-option -g),
  • параметри сеансу ( set-option),
  • параметри глобального вікна ( set-window-option -g),
  • параметри вікна ( set-window-option)?

Також які правила спадкування для цих типів?

Відповіді:


30

Є три різні класи варіантів: сервер, сеанс та вікно. Ці класи є ексклюзивними: кожен варіант належить лише одному з класів. Між опціональними класами ніколи не відбувається спадкування.

Існує лише один рівень параметрів сервера, тому спадкування там немає (хоча ви можете мати кілька незалежних серверів, використовуючи прапори -Lабо -Sкомандний рядок).

Параметри сеансу та вікна використовують дворівневу ієрархію: параметри глобальної сесії (вікна) забезпечують значення за замовчуванням для параметрів сеансу (вікна), які не встановлені. Параметри сеансу та вікна спочатку не встановлені, тому нові сесії / вікна автоматично використовуватимуть значення глобальних параметрів сеансу / вікна.

Коли параметр сеансу встановлений ( set-option), щойно встановлене значення буде замінено загальне значення для цього сеансу. Щоб повернутися до використання глобального значення, зніміть опцію ( set-option -u). Зміни значень параметрів глобальної сесії вплинуть на всі сеанси, у яких ця опція наразі не встановлена. Ця ж ідея стосується параметрів вікна (за винятком того, що параметр вікна замінює значення для окремого вікна замість окремого сеансу).


Наприклад, щоб знайти ефективне значення для параметра base-indexсеансу для певного сеансу:

  • Перевірте параметр сеансу base-index(тобто що ви отримуєте від tmux -t «target-session» show-options base-index* ).
    1. Якщо сеанс має base-indexзначення, то використовуйте його.
    2. Якщо значення сеансу не було встановлено, використовуйте глобальне значення (тобто те, що ви отримаєте tmux show-options -g base-index).

Аналогічно, щоб знайти ефективне значення для параметра mode-keysвікна для певного вікна:

  • Перевірте параметр вікна mode-keys(тобто, що ви отримуєте від tmux -t «target-window» show-options -w mode-keys** ).
    1. Якщо у вікна є mode-keysзначення, то використовуйте його.
    2. Якщо значення вікна не було встановлено, то використовуйте глобальне значення (тобто те, що ви отримуєте tmux show-options -gw mode-keys).

* Старіші версії tmux не приймають аргумент імені параметра show-options. З цими версіями ви повинні зробити що - щось на зразок Grep для нього: tmux -t target show-options | grep '^base-index '.
** Це те саме, що tmux show-window-options base-index, якщо вам це більше подобається. Зв'язана команда для параметрів глобального вікна є tmux show-window-options -g base-index.


Ось схема:

                 .---------------.
                ( server options  )
                 `---------------'

===========================================================

              .----------------------.
             ( global session options )    base-index 1
              `---------+--+---------'     visual-bell on
                     --/    \--
                  --/          \--
           +-----/-----+    +-----\-----+
           | session X |    | session Y |
           +-----------+    +-----------+
           base-index 0     visual-bell off

  effective values for X:
      base-index 0     (set)
      visual-bell on   (global)

  effective values for Y:
      base-index 1     (global)
      visual-bell off  (set)

===========================================================

              .---------------------.
             ( global window options )    pane-base-index 1
              `---------+++---------'     mode-keys emacs
                    ---/ | \---
                 --/     |     \---
             ---/        |         \---
         ---/            |             \---
+-------/----+    +------+-----+    +------\-----+
| window X.0 |    | window X.1 |    | window Y.0 |
+------------+    +------------+    +------------+
pane-base-index 0                   mode-keys vi
mode-keys vi

  effective values for X.0:
      pane-base-index 0   (set)
      mode-keys vi        (set)

  effective values for X.1:
      pane-base-index 1   (global)
      mode-keys emacs     (global)

  effective values for Y.0:
      pane-base-index 1   (global)
      mode-keys vi        (set)

Щоб відключити параметри сервера від глобальних: Параметри сервера - це параметри, які не застосовуються ні до параметрів сеансу, ні до вікна. І є лише кілька варіантів сервера, які можна перерахувати show -s. Однак з точки зору використання параметри сервера IMHO не потрібні.
Бор

1
Я хочу сказати, що я бажаю, щоб параметри сервера також можна було вказати -gі видалити -sлише заради простоти UX. Я просто не отримую ніякої користі, знаючи, що варіант - це варіант сервера.
Бор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.