以下是我的.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
字符串,您会注意到它由五个块组成:
- 蓝色表示当前目录
- 空间
- 红色部分为 git 分支
- 空间
- 提示指示器 (
>
)
因此,如果您不在 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> '