gpt4 book ai didi

Tmux 条件颜色设置

转载 作者:行者123 更新时间:2023-12-02 00:56:56 29 4
gpt4 key购买 nike

是否可以设置窗口颜色取决于其他窗口选项?

当一个窗口有 synchronize-panes启用,我不想不小心按 C-d ,否则所有 Pane 都将关闭。

所以我想要做的是根据 synchronize-panes 更改状态行上的窗口颜色:
(不过,以下配置不起作用)

bind-key S setw synchronize-panes \; \  # toggles the option
set -w window-status-bg '#{?pane_synchronized,yellow,default}' \; \ # error: bad color
set -w window-status-current-fg '#{?pane_synchronized,yellow,default}' # error: bad color

我能想到的最可能的解决方案是使用 if-shell ,但如果可能的话,我不希望为了读取自身的选项而 fork 一个 shell。

编辑:这个 if-shell解决方案适用于 tmux 2.7

我的状态栏为青色,如果 synchronize-panes启用,青色变为黄色。
bind-key S setw synchronize-panes \; \
if-shell '[ #{pane_synchronized} -eq 1 ]' \
'set -w window-status-style fg=black,bg=yellow ; set -w window-status-current-style fg=yellow,bg=black' \
'set -w window-status-style fg=black,bg=cyan ; set -w window-status-current-style fg=cyan,bg=black'

编辑:问题解决了,我的设置现在改为:
bind-key S setw synchronize-panes

sync_ind_colour="#{?pane_synchronized,yellow,cyan}"
set -g window-status-format "#[fg=black,bg=${sync_ind_colour}][#I#{?#{!=:#W,},:,}#W]"
set -g window-status-current-format "#[fg=${sync_ind_colour},bg=black][#I#{?#{!=:#W,},:,}#W]"

看起来有点吓人,但它仍然可读。

最佳答案

应该没有必要使用 if-shell为了这。您可以在格式选项中使用条件,但不能在样式中使用。以下最小配置应该可以满足您的需求。

# toggle pane synchronisation mode
bind-key S setw synchronize-panes

# Variables
sync_ind_colour="#{?pane_synchronized,yellow,cyan}"

# status format
setw -g window-status-format "#[fg=black,bg=${sync_ind_colour}]#I #W"
setw -g window-status-current-format "#[fg=${sync_ind_colour},bg=black][#I #W]"


请注意,我将窗口状态的文本设置为 #I #W (和 [#I #W] 用于事件)作为示例,但这与问题无关。

也不需要使用变量( sync_ind_colour ,同步指示器颜色),但它比在 window-status-format 和 window-status-current-format 变量中定义相同的条件更简单。

关于Tmux 条件颜色设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53650894/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com