全局,服务器,会话和窗口选项之间的区别


19

tmux手册讨论了各种类型的选项,例如全局选项服务器选项等。问题默认的tmux配置文件在哪里?也指其中一些配置类型。

其中一些类型很容易理解:窗口选项处理仅与单个窗口有关的内容。例如“允许重命名”:窗口有名称,会话没有。但是,对于其他类型,区别不是很清楚。

之间有什么区别

  • 服务器选项(set-option -s),
  • 全局会话选项(set-option -g),
  • 会话选项(set-option),
  • 全局窗口选项(set-window-option -g),
  • 窗口选项(set-window-option)?

另外,这些类型的继承规则是什么?

Answers:


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。但是,从使用角度来看,服务器选项不是必需的恕我直言。
布尔

1
我的意思是希望仅出于UX简单性的考虑,也可以指定-g和删除服务器选项-s。我只是知道一个选项是服务器选项并没有得到任何好处。
玻尔2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.