Как мне показать информацию о git только в $ PS1, если я нахожусь только в каталоге git?

0

Я использую в oh-my-zshкачестве своей раковины и настроить мой $PS1в .zshrcбыть следующим:

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

Это отобразит приглашение, как если бы я был в каталоге git:

[Vortexgit:(master)]$

Я хотел бы добавить пробел перед 'git' в приведенном выше приглашении, только когда я нахожусь в каталоге git.

Для примера, смотрите ниже:

Non-Git Каталог: [~]$

Каталог Git: [Vortex git:(master)]$

Если я добавлю пробел перед 'git' в моем PS1, тогда приглашение в не-git каталоге будет выглядеть так:

[~ ]$,

Я не хочу пробела после th ~в приведенном выше примере. Пространство не должно быть там, когда в не-git каталоге. Это должно появиться, только если я нахожусь в git-каталоге.

Модифицированный, $PS1который достигает [~ ]$:

PS1='[${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[blue]%}%c%{$reset_color%} $(git_prompt_info)]$ '
Николас Адаму
источник
В этом руководстве предлагается изменить ZSH_THEME_GIT_PROMPT_PREFIXпеременную среды.
17

Ответы:

0

Я понял.

Просто добавьте эту функцию и добавьте ее в $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)]$ '
Николас Адаму
источник