Я использую 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 каталоге будет выглядеть так:

[~ ]$ .

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

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

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

1 ответ1

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)]$ '

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .