11

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

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

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

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

Кроме того, каковы правила наследования для этих типов?

1 ответ1

18

Существует три различных класса параметров: сервер, сеанс и окно. Эти классы являются эксклюзивными: каждый параметр принадлежит только одному из классов. Между классами опций никогда не бывает наследства.

Существует только один уровень параметров сервера, поэтому здесь нет наследования (хотя вы можете иметь несколько независимых серверов, используя флаги командной строки -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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .