linux - zsh提示功能不起作用

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

最佳答案

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

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

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

关于linux - zsh提示功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28179617/

相关文章:

linux - 在 linux 终端中允许换行的快捷方式是什么?

linux - spring集成sftp入站 channel 适配器和临时文件问题

linux - 什么是./在终端上执行期间

bash - 将 cut 命令的输出通过管道传输到 grep 命令的正确方法是什么?

php - 在 PhP5 中,有没有办法获取我所有服务器的 IP 地址?

c - 具有多个客户端 C/unix 的简单 TCP 服务器

unix - 带有 FUSE 的 Google 云端硬盘

linux - 如何使用 SED 替换文件中的撇号 '

notifications - 完成工作后如何在终端中获得声音通知

C 中的字符数组和 getline