如何在 tmux.conf 中设置不会导出到环境中的变量,同时在 tmux 中引用它们?

如何在 tmux.conf 中设置不会导出到环境中的变量,同时在 tmux 中引用它们?

我的 中有以下内容.tmux.conf

FG_COLOR=blue
BG_COLOR=white
# Many lines ...
set-window-option -g window-status-current-style fg=$FG_COLOR,bg=$BG_COLOR

这样做的好处是,相同的值只需要在配置文件中写入一次。但是我不喜欢这些值在 tmux 中运行的 shell 中显示(它们在env输出中弹出)。这些值在 tmux 上下文之外完全没用,所以我希望它们不出现。

我尝试了以下设置,但是全部其中许多都会导致 tmux 抱怨bad style或者类似情况:

@FG_COLOR=blue
set-window-option -g window-status-current-style fg=@FG_COLOR
set-option -g @FG_COLOR blue
set-window-option -g window-status-current-style fg=@FG_COLOR
set-window-option -g window-status-current-style "fg=#{FG_COLOR}"

有任何想法吗?

答案1

用户选项的语法如下:

set -g @FG_COLOR blue
set -g window-status-current-style "fg=#{@FG_COLOR}"

它们是普通选项,不同之处在于它们的名称以 开头@。因此,使用它们时需要同时使用:@名称前面的 以及#{}

即使 tmux >= 3.2,我也认为这是一个比使用更好的解决方案%hidden

我不确定它们具体是什么时候被引入的,但据说CHANGES它们在 2.2 中就已经存在了:

从 2.2 到 2.3 的变更,2016 年 9 月 29 日
[...]

  • 现在支持使用“set -a”附加到用户选项(@foo)。

答案2

如果你的 tmux 足够新,你可以使用%local。但是你可能需要 3.2 或 master。

编辑:它实际上被调用%hidden并从 3.2 开始可用。

相关内容