我的.zshrc:
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
cNone='\033[00m'
cRed='\033[01;31m'
cGreen='\033[01;32m'
cYellow='\033[01;33m'
cPurple='\033[01;35m'
cCyan='\033[01;36m'
cWhite='\033[01;37m'
cBold='\033[1m'
cUnderline='\033[4m'
COLOR="\033[32m\]"
export PS1="(parse_git_branch) %~ ${cRed}♥ "
输出:
(parse_git_branch) ~/someDirectory/Another \033[01;32m♥
不确定为什么它没有正确地转义颜色,也不确定为什么它没有评估git branch命令。
答案 0 :(得分:1)
首先,根据http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html,zsh支持使用%F 启动字体颜色,%f 支持停止字体颜色:
如果终端支持,则使用不同的前景色启动(停止)。颜色可以指定两种方式:作为数字参数,正常情况,或者通过%F后面的大括号中的序列,例如%F {red}。
制作红色♥:%F{red}♥%f
其次,要获取git分支名称,有一种更简单的方法:
git rev-parse --abbrev-ref HEAD 2> /dev/null
第三,为了在提示setopt prompt_subst
内运行命令是必需的
最后,这是你多彩的提示:
setopt prompt_subst
PS1='$(git rev-parse --abbrev-ref HEAD 2> /dev/null) %~ %F{red}♥%f '
如果你想使用" (双引号)而不是' (单引号),在$之前需要一个\(反斜杠):
setopt prompt_subst
PS1="\$(git rev-parse --abbrev-ref HEAD 2> /dev/null) %~ %F{red}♥%f "