我自定义了
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
通常对窗口中的所有窗格起作用。
为了这样的效果,我已经在谷歌上迷路了好几天。甚至可以制作吗?如果是这样的话。提前致谢。