Zsh提示功能不起作用

时间:2015-01-27 20:43:04

标签: linux unix terminal console zsh

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

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

1 个答案:

答案 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,它允许您生成带有版本控制信息的提示,而无需自行进行数据检索。