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


19

В руководстве по tmux обсуждаются различные типы параметров, например, глобальные параметры , параметры сервера и так далее. Вопрос Где находится файл конфигурации tmux по умолчанию? также относится к некоторым из этих типов конфигурации.

Некоторые из этих типов легко понять: параметры окна имеют дело с вещами, которые относятся только к одному окну. Например, «allow-rename»: окна имеют имена, а сессии - нет. Для других типов, однако, различие не очень ясно.

В чем разница между

  • параметры сервера ( 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.