为什么它不起作用?提示区域为空,我没有错误。
setopt prompt_subst
git_prompt() {
temp=`git symbolic-ref HEAD 2>/dev/null | cut -d / -f 3`
if [ "$temp" != "" ]; then
RPROMPT='%{$fg_no_bold[green]%}git:($temp%)%{$reset_color%} %{$fg_no_bold[yellow]%}[%1~]%{$reset_color%}'
else
RPROMPT='%{$fg_no_bold[yellow]%}[%~]%{$reset_color%}'
fi
}
RPROMPT='$(git_prompt)'
RPROMPT的值拼写正确且不包含错误。
答案 0 :(得分:3)
函数git_prompt
不会产生任何输出,而是直接设置RPROMPT
。然而,您将RPROMPT
设置为git_prompt
的输出,有效地将其设置为空字符串。
返回字符串,而不是在RPROMPT
中设置git_prompt
。
setopt prompt_subst git_prompt() { temp=`git symbolic-ref HEAD 2>/dev/null | cut -d / -f 3` if [ "$temp" != "" ]; then return '%{$fg_no_bold[green]%}git:($temp%)%{$reset_color%} %{$fg_no_bold[yellow]%}[%1~]%{$reset_color%}' else return '%{$fg_no_bold[yellow]%}[%~]%{$reset_color%}' fi } RPROMPT='$(git_prompt)'
或者只是在打印提示之前将git_prompt
设置为自动运行:
git_prompt() { temp=`git symbolic-ref HEAD 2>/dev/null | cut -d / -f 3` if [ "$temp" != "" ]; then RPROMPT='%{$fg_no_bold[green]%}git:($temp%)%{$reset_color%} %{$fg_no_bold[yellow]%}[%1~]%{$reset_color%}' else RPROMPT='%{$fg_no_bold[yellow]%}[%~]%{$reset_color%}' fi } autoload -Uz add-zsh-hook add-zsh-hook precmd git_prompt
您可能还想查看the vcs_info
function,它允许您生成带有版本控制信息的提示,而无需自行进行数据检索。