`set -g` 和 `setw -g` 以及 `set` 之间有什么区别?

`set -g` 和 `setw -g` 以及 `set` 之间有什么区别?

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

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

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

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

答案1

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

基本上,它很复杂。“set”可以设置服务器、窗口和会话选项,其作用与使用“set -s”或“set”设置服务器选项相同。但是,在设置服务器选项时包含“-s”是一种很好的做法,因为如果它实际上不是服务器选项,它会阻止设置该选项。服务器选项的示例包括 buffer-limit 和 exit-unattached。如果您使用 set -s 编辑选项,然后打开一个新终端,新终端将反映更改后的选项。

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

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

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

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

相关内容