根据复制模式更改 tmux 状态栏背景颜色

根据复制模式更改 tmux 状态栏背景颜色

如何根据客户端是否处于复制模式将 tmux 栏的背景颜色更改为不同的颜色?

目标是使 tmux 客户端何时处于复制模式变得非常清楚。

如何检测格式字符串中的复制模式

我找到了#{?#{!=:#{selection_present},},COPY-MODE,NORMAL-MODE}作品。

我尝试过

设置status-leftstatus-right

这只会改变栏目中某一部分的样式。例如:

set -g status-left '#{?#{!=:#{selection_present},},#[bg=yellow],#[bg=green]}#{=10:session_name}@#{=10:host_short}

这将显示session@hostname在左下角,并且它会改变背景,但不会改变整个状态栏的颜色。

status-style使用格式字符串设置

set -F -g status-style 'bg=#{?#{!=:#{selection_present},},yellow,green},fg=black

这似乎评估格式字符串只有一次注意:如果我删除-Fbg,则不会改变。

答案1

您可以使用钩子,例如:

set-hook -g pane-mode-changed 'if -F "#{m/r:(copy|view)-mode,#{pane_mode}}" "set status-style bg=red" "set -u status-style"'

如果你的 tmux 对于 m/r 来说太旧,你可以使用类似的方法#{||:#{==:#{pane_mode},copy-mode},#{==:#{pane_mode},view-mode}}

或者,您可以修改 status-format[0],但这有点麻烦,因为 status-style 是隐式的默认值。

相关内容