如何将多种颜色应用于 tmux 窗格标题

问题描述 投票:0回答:0

我自定义了

tmux
窗格标题,以便它们显示动态更新的信息(而不是例如过度膨胀的 shell 提示符)。我将 3 个不同的部分(pwd、git 分支和作业)与
.bashrc
中定义的 bash 函数组合在一起的窗格标题如下所示:

update_tmux_pane_title() {
    if [[ "$TERM" =~ screen ]]; then

        # add last 3 path segments of the current working dir:
        title="${PWD#${PWD%/*/*/*}/}"

        # add git branches pointing to HEAD:
        if [[ $(git rev-parse --is-inside-work-tree 2>/dev/null) == true ]]; then
            title="$title ($(git for-each-ref refs/heads refs/remotes --points-at=HEAD \
                             --format='%(if:equals=*)%(HEAD)%(then)%(HEAD)%(end)%(refname:lstrip=2)' | sed -z 's/\n/, /g; s/..$//'))"
        fi

        # add all active jobs:
        jnum="\j"
        if [ ${jnum@P} -gt 0 ]; then
            title="$title --- [$(jobs | sed "s/\[\(.*\)\].*   /\1:/; s/  (.*)//" | sed -z "s/\n/, /g; s/..$//")]"
        fi

        tmux select-pane -T "$title"
    fi
}
PROMPT_COMMAND="update_tmux_pane_title; $PROMPT_COMMAND"

它的效果看起来或多或少是这样的:

现在,为了从中获得更好的视觉反馈,我真的需要对特定的“片段”应用不同的颜色,这样它看起来更像:

我知道在使用上述技术(结合 bash 变量)时可能无法选择性地应用多种颜色,因为我仍然使用单个

pane_border_format
字段,即
#{pane_title}
可能只有一种颜色。我想知道如何使用自定义
tmux
变量或用户选项并重新格式化窗格边框文本,例如:
" #{pwd} (#{branches}) [#{jobs}] "
以指定它们之间的
#fg
颜色,但后来我知道没有办法实际使此类变量/占位符成为窗格-具体而不是覆盖相邻窗格的标题,因为
page_border_format
通常对窗口中的所有窗格起作用。

为了这样的效果,我已经在谷歌上迷路了好几天。甚至可以制作吗?如果是这样的话。提前致谢。

bash tmux
© www.soinside.com 2019 - 2024. All rights reserved.