如果我只在 git 目录中,如何仅在 $PS1 中显示 git 信息?

如果我只在 git 目录中,如何仅在 $PS1 中显示 git 信息?

我使用oh-my-zsh作为我的 shell,并且我将我的设置$PS1如下.zshrc

PS1='[${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[blue]%}%c%{$reset_color%}$(git_prompt_info)]$ '

如果我在 git 目录中,则会显示如下提示:

[Vortexgit:(master)]$

我希望在上面的提示中的“git”之前添加一个空格仅有的当我在 git 目录中时。

例如,见下文:

非 Git 目录:[~]$

Git 目录:[Vortex git:(master)]$

如果我在 PS1 中的“git”前添加一个空格,那么非 git 目录中的提示符将如下所示:

[~ ]$

我不想在上面的例子中出现 th 后面的空格~。在非 git 目录中,不应该有空格。应该只出现如果我在 git 目录中。

修改后$PS1的实现[~ ]$

PS1='[${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[blue]%}%c%{$reset_color%} $(git_prompt_info)]$ '

答案1

我想到了。

只需添加此函数并将其附加到$PS1变量即可。

function put_spacing() {
  local git=$(git_prompt_info)
  local spacing=""
  if [ ${#git} != 0 ]; then
    spacing=" "
  else
    spacing=""
  fi

  echo $spacing
}

PS1='[${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[blue]%}%c%{$reset_color%}$(put_spacing)$(git_prompt_info)]$ '

相关内容