在 zsh 中使用 vcs_info 时自定义提示

在 zsh 中使用 vcs_info 时自定义提示

以下是我的.zshrc文件:

autoload -Uz vcs_info
precmd() { vcs_info }

zstyle ':vcs_info:git:*' formats '(%b)'

setopt PROMPT_SUBST

PROMPT='%F{blue}%B%1/%b%f %F{red}%B${vcs_info_msg_0_}%b%f > '

我正在挑剔并试图修复一件事,但我不知道该怎么做。如果我在 git repo 中,我会收到以下提示:

git-repo-123 (branch-323232) >

但是如果我不在 git repo 中,我会收到以下提示:

some-non-git-repo-dir >

如您所见,当我不在 git repo 中时some-non-git-repo-dir,和之间有两个空格>。我该如何解决这个问题?我知道这很小,但我不知道在 google 中输入什么来帮助我找到解决方案。我对 zsh 还很陌生,正在尝试根据自己的喜好配置我的 shell。提前感谢所有回复的人!

答案1

通过检查PROMPT字符串,您会注意到它由五个块组成:

  1. 蓝色表示当前目录
  2. 空间
  3. 红色部分为 git 分支
  4. 空间
  5. 提示指示器 ( >)

因此,如果您不在 git repo 中,第三个块将为空,并且最终会得到两个相邻的空白(块 2 和 4)。

仅当您在 git repo 中时,您才需要块 4 的空白。例如,您可以通过将空白放入样式中vcs_info并将其从 中省略来实现这一点PROMPT,如下所示:

zstyle ':vcs_info:git:*' formats '(%b) '
PROMPT='%F{blue}%B%1/%b%f %F{red}%B${vcs_info_msg_0_}%b%f> '

相关内容