Como eu só mostro informações de git no $ PS1 se eu estiver apenas em um diretório git?

0

Estou usando oh-my-zsh como meu shell e configuro meu $PS1 no .zshrc como segue:

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

Isso exibe um prompt assim, se eu estiver em um diretório git:

[Vortexgit:(master)]$

Eu gostaria que ele adicionasse um espaço antes de 'git' no prompt acima somente quando eu estivesse em um diretório git.

Por exemplo, veja abaixo:

Diretório não-Git: [~]$

Diretório Git: [Vortex git:(master)]$

Se eu adicionar um espaço antes de 'git' no meu PS1, então o prompt no diretório não-git se parece com isto:

[~ ]$ .

Eu não quero o espaço depois de th ~ no exemplo acima. O espaço não deveria estar lá quando estiver em um diretório não-git. Deve aparecer somente se eu estiver em um diretório git.

O $PS1 modificado que alcança [~ ]$ :

PS1='[${SSH_CONNECTION+"%{$fg_bold[green]%}%n@%m:"}%{$fg_bold[blue]%}%c%{$reset_color%} $(git_prompt_info)]$ '
    
por Nicholas Adamou 10.01.2017 / 19:47

1 resposta

0

Eu percebi isso.

Basta adicionar essa função e anexá-la à variável $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)]$ '
    
por 14.01.2017 / 00:12