Zsh主题:脏颜色和后缀

Zsh主题:脏颜色和后缀,zsh,oh-my-zsh,Zsh,Oh My Zsh,我正在尝试自定义Bira zsh主题,以便干净的分支是绿色的,脏的分支是红色的,并且在末尾有一个星号,就像这样 我已经得到了它,因此颜色会根据分支的状态而变化,但我不知道如何让星号显示在最后。以下是我到目前为止的情况。我对定制zsh主题文件非常陌生,因此非常感谢您的帮助 # ZSH Theme - Modified from bira.zsh-theme local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})" if [[ $UID

我正在尝试自定义Bira zsh主题,以便干净的分支是绿色的,脏的分支是红色的,并且在末尾有一个星号,就像这样

我已经得到了它,因此颜色会根据分支的状态而变化,但我不知道如何让星号显示在最后。以下是我到目前为止的情况。我对定制zsh主题文件非常陌生,因此非常感谢您的帮助

# ZSH Theme - Modified from bira.zsh-theme
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"

if [[ $UID -eq 0 ]]; then
    local user_host='%{$terminfo[bold]$fg[red]%}%n@%m%{$reset_color%}'
    local user_symbol='#'
else
    local user_host='%{$terminfo[bold]$fg[cyan]%}%n@%m%{$reset_color%}'
    local user_symbol='$'
fi

local current_dir='%{$terminfo[bold]$fg[yellow]%}%~%{$reset_color%}'
local git_branch='$(git_prompt_info)%{$reset_color%}'

function git_prompt_info() {
  ref=$(git symbolic-ref HEAD 2> /dev/null) || return
  echo "$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_PREFIX$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX"
}

PROMPT="
╭─${user_host}  ${current_dir}  ${git_branch}
╰─%B${user_symbol}%b "
RPS1="%B${return_code}%b"


ZSH_THEME_GIT_PROMPT_PREFIX="‹"
ZSH_THEME_GIT_PROMPT_SUFFIX="›$reset_color"
ZSH_THEME_GIT_PROMPT_DIRTY="$fg[red]"
ZSH_THEME_GIT_PROMPT_CLEAN="$fg[green]"

parse\u git\u dirty
函数在中定义

通过将该函数复制到您的文件中并稍加修改,我们可以实现您想要的:

函数git\u prompt\u info(){ ref=$(git symbolic ref HEAD 2>/dev/null)|返回 #检查工作树是否脏 本地状态=“” 地方旗帜 旗帜=(“--瓷器”) 如果[[“$(command git config--get oh my zsh.hide dirty)!=“1”];那么 如果[$POST_1_7_2_GIT-gt 0]];那么 标志+='--忽略子模块=脏' fi 如果[[“$DISABLE\u UNTRACKED\u FILES\u DIRTY”==“true”];则 标志+='--未跟踪文件=否' fi STATUS=$(命令git STATUS${FLAGS}2>/dev/null | tail-n1) fi 如果[[-n$STATUS]];则 GIT_提示符_COLOR=“$ZSH_主题_GIT_提示符_脏” GIT_DIRTY_STAR=“*” 其他的 GIT_PROMPT_COLOR=“$ZSH_THEME_GIT_PROMPT_CLEAN” 未设置GIT_DIRTY_STAR fi echo“$GIT\u PROMPT\u COLOR$ZSH\u THEME\u GIT\u PROMPT\u PREFIX$(当前分支)$GIT\u DIRTY\u STAR$ZSH\u THEME\u GIT\u PROMPT\u后缀” }
与库函数的唯一区别是指定
GIT\u PROMPT\u COLOR
GIT\u DIRTY\u STAR
而不是回显,然后在最后的回显中使用它们。

这正是我想要的-非常感谢!