这个问题是松散的联系这一个。
所以我在各种操作系统(和 Linux 发行版)上使用了 1.5 和 2.2 之间的一系列 Tmux 版本。
~/.tmux.conf为早期版本量身定制的我在 Tmux 2.2 上显示了以下三行警告:
/home/username/.tmux.conf:34: unknown option: mode-mouse
/home/username/.tmux.conf:70: unknown option: status-utf8
/home/username/.tmux.conf:71: unknown option: utf8
Run Code Online (Sandbox Code Playgroud)
粗略查看man页面表明这些配置选项已停止使用。然而,Tmux 并没有默默地忽略它们,而是抱怨“未知”选项。
与上述警告对应的行是:
set-window-option -g mode-mouse off
set-option -g status-utf8 on
set-window-option -g utf8 on
Run Code Online (Sandbox Code Playgroud)
该选项mode-mouse在 Tmux 2.1 中已停止使用,status-utf8并utf8在 Tmux 2.2 中停止使用。CHANGES源树中的文件详细说明了已删除的选项以及简要说明。
有没有一种方法可以抑制这个输出?更好的是,是否可能有条件地执行基于 Tmux 版本的配置文件节,而无需单独的配置文件片段(必须是source-d)?
简而言之:.tmux.conf在多个 Tmux 版本中使用完全相同的直接方法是什么?
理由:这让我感到困扰的原因是,每当会话开始时,Tmux 都会显示这些警告。它需要我采取行动(按下一个键)才能进入外壳。但是,在较旧的 Tmux 版本上我没有问题,但我想在这些较旧的 Tmux 版本上设置相应的选项。
从旧man页面:
status-utf8 [on | off]指示 tmux 将 status-left 和 status-right 字符串中的 top-bit-set 字符视为 UTF-8;值得注意的是,这对于宽字符很重要。此选项默认为关闭。
和:
utf8 [on | off]指示 tmux 期望 UTF-8 序列出现在此窗口中。
这是我最喜欢的解决方案,它也避免了if-shell旧版 Tmux 上不太可靠的问题。
作为临时解决方法,我使用以下配置节:
if-shell "tmux -V|awk '{if($2 < 2.1) {exit 0} else {exit 1}}'" "set-window-option -g mode-mouse off" "set-window-option -g mouse off"
if-shell "tmux -V|awk '{if($2 < 2.2) {exit 0} else {exit 1}}'" "set-option -g status-utf8 on"
if-shell "tmux -V|awk '{if($2 < 2.2) {exit 0} else {exit 1}}'" "set-window-option -g utf8 on"
Run Code Online (Sandbox Code Playgroud)
代替原来的节:
set-window-option -g mode-mouse off
set-option -g status-utf8 on
set-window-option -g utf8 on
Run Code Online (Sandbox Code Playgroud)
我不确定这是否适用于awk我正在使用的所有操作系统和 Linux 发行版上的所有风格,但也许它可以帮助那些可以依赖一组狭窄风格的人awk(例如gawk,仅mawk适用于我测试过该命令的人) 。
请注意此答案的评论,了解此方法的一些问题。