`set -g` 和 `setw -g` 和 `set` 之间的区别?

Ste*_*ieD 13 tmux

我正在阅读 tmux 手册,据我所知,如果set没有标志,默认情况下它是一个“会话选项”,我认为这意味着它只适用于那个会话。

如果-g提供了标志,则它是一个“全局会话”选项。我认为这意味着它适用于所有会话。

现在,如果我这样做setw -g,那是一个全局窗口选项,我认为这意味着它适用于会话中的所有窗口,这set与没有标志的情况相同。

然后是-s标志,这意味着它适用于整个服务器。这听起来像是适用于所有会话,这听起来与set -gflag相同。但我不认为这是正确的。不过,这听起来不太对,因为那为什么有两个做同样事情的标志呢?

小智 9

StevieD 提供的链接“全局、服务器、会话和窗口选项之间的差异的可能重复”是一个很好的概述。

基本上,这很复杂。“set”可以设置服务器、窗口和会话选项,并且与使用“set -s”或“set”设置服务器选项的效果相同。但是,在设置服务器选项时包含“-s”是一种很好的做法,因为如果该选项实际上不是服务器选项,则它会阻止设置该选项。服务器选项的示例包括缓冲区限制和退出未附加。如果您使用 set -s 编辑选项,然后打开新终端,新终端将反映更改后的选项。

“setw”命令可以使用的标志较少。“setw -s”没有任何意义,因为 setw 是特定于窗口的。(顺便说一句,“set -w”与“setw”完全相同。)与“set”命令类似,-a 将值附加到现有设置,-F 扩展选项值中的格式,-g 设置/unsets 全局选项,-o 防止设置已设置的选项,-q 抑制有关未知或不明确选项的错误,-u 取消设置选项,以便会话继承全局选项,或者如果还使用 -g 则它实际上将该全局选项更改回默认值。

因此,如果我只想将我的窗口的默认 shell 更改为 /bin/bzexe,我可以运行 tmux setw default-shell /bin/bzexe

“set”设置一个选项,当运行“set -g”时该选项将保持不变。“setw”与“set”有不同的选项,“setw -g”的作用与“set -g”类似,在该设置中,当使用“show-window-option”检查时,全局不会更改值。

“set”选项可以用“show-options”显示 “setw”选项可以用“show-window-option”显示 所有上述命令都可以通过添加 -g 来更改以查看全局变量。