グローバル、サーバー、セッション、ウィンドウオプションの違い


19

tmuxマニュアルでは、グローバルオプションサーバーオプションなど、さまざまなタイプのオプションについて説明しています。質問デフォルトのtmux構成ファイルはどこにありますか?これらのタイプの構成の一部も指します。

これらのタイプのいくつかは簡単に理解できます。ウィンドウオプションは、単一のウィンドウにのみ関連するものを処理します。たとえば、「allow-rename」:ウィンドウには名前がありますが、セッションにはありません。ただし、他のタイプの場合、区別はあまり明確ではありません。

違いは何ですか

  • サーバーオプション(set-option -s)、
  • グローバルセッションオプション(set-option -g)、
  • セッションオプション(set-option)、
  • グローバルウィンドウオプション(set-window-option -g)、
  • ウィンドウオプション(set-window-option)?

また、これらのタイプの継承ルールは何ですか?

回答:


30

オプションには、サーバー、セッション、ウィンドウの3つの異なるクラスがあります。これらのクラスは排他的です。各オプションは1つのクラスのみに属します。オプションクラス間に継承はありません。

サーバーオプションのレベルは1つしかないため、そこには継承がありません(-Lまたは、-Sコマンドラインフラグを使用して複数の独立したサーバーを持つことができます)。

セッションとウィンドウのオプションはそれぞれ2レベルの階層を使用します。グローバルセッション(ウィンドウ)オプションは、設定されていないセッション(ウィンドウ)オプションのデフォルト値を提供します。セッションとウィンドウのオプションはすべて最初は設定されていないため、新しいセッション/ウィンドウは自動的にグローバルなセッション/ウィンドウのオプション値を使用します。

セッションオプションが設定されている場合(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です。ただし、使用の観点からは、サーバーオプションは必須ではありません。
ボーア

1
UXをシンプルにするために、サーバーオプションも指定し-gて削除できるようにしたいの-sです。オプションがサーバーオプションであることを知っても、何の利益も得られません。
ボーア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.