为什么它不起作用?提示区域为空,我没有错误。

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的值拼写正确,并且不包含错误。

最佳答案

函数git_prompt不产生任何输出,而是直接设置RPROMPT。然后将RPROMPT设置为git_prompt的输出,从而将其有效地设置为空字符串。

请返回字符串,而不是在RPROMPT中设置git_prompt

setopt提示_替代
git_prompt(){
  temp =`git symbolic-ref HEAD 2> / dev / null |切-d / -f 3`
  如果[“ $ temp”!=“”];然后
        返回'%{$ fg_no_bold [green]%} git:($ temp%)%{$ reset_color%}%{$ fg_no_bold [yellow]%} [%1〜]%{$ reset_color%}'
  其他
        返回'%{$ fg_no_bold [yellow]%} [%〜]%{$ reset_color%}'
  科幻
}
RPROMPT ='$(git_prompt)'


或者只是将git_prompt设置为在打印提示之前自动运行:

git_prompt(){
  temp =`git symbolic-ref HEAD 2> / dev / null |切-d / -f 3`
  如果[“ $ temp”!=“”];然后
        RPROMPT ='%{$ fg_no_bold [green]%} git:($ temp%)%{$ reset_color%}%{$ fg_no_bold [yellow]%} [%1〜]%{$ reset_color%}'
  其他
        RPROMPT ='%{$ fg_no_bold [yellow]%} [%〜]%{$ reset_color%}'
  科幻
}
自动加载-Uz add-zsh-hook
add-zsh-hook precmd git_prompt




您可能还想研究the vcs_info function,它使您可以生成带有版本控制信息的提示,而不必自己进行数据检索。

08-05 11:06