oh-my-zsh的主体大都挺不错的,但是很多显示git status的设置不会变色,而是显示为一个小符号
个人比较喜欢对分支变色的样式,于是自己写了一个小主体
大致是这个样子,由提供的robbyrussel主体稍作修改得来
fucntion git_prompt_info(){
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "$ZSH_THEME_GIT_PROMPT_PREFIX$(parse_git_dirty)$(current_branch)$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
PROMPT="%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
PROMPT+=' %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:("
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$fg_bold[blue]%})$reset_color"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[green]%}"
红色部分为个人添加的,即覆盖掉本身的$(git_prompt_info),为其重新写一个样式
关键在于$(parse_git_dirty)这个函数,返回的是ZSH_THEME_GIT_PROMPT_DIRTY或CLEAN中的一个,所以我们把返回结果写成一个样式修饰$(current_branch)即可
此时分支就会根据DIRTY或者CLEAN的样式变色了