如何根据客户端是否处于复制模式将 tmux 栏的背景颜色更改为不同的颜色?
目标是使 tmux 客户端何时处于复制模式变得非常清楚。
如何检测格式字符串中的复制模式
我找到了#{?#{!=:#{selection_present},},COPY-MODE,NORMAL-MODE}
作品。
我尝试过
设置status-left
或status-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
这似乎评估格式字符串只有一次。注意:如果我删除-F
bg,则不会改变。
答案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 是隐式的默认值。