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

Win*_*nny 3 colors 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 不会改变。

Nic*_*ott 7

您可以使用钩子,例如:

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

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

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