Як я можу відображати інформацію про 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.

Приклад див. Нижче:

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

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

Якщо я додаю пробіл перед 'git' у своєму PS1, то підказка у каталозі non-git виглядає приблизно так:

[~ ]$.

У ~вищенаведеному прикладі я не хочу місця після . Простір не повинен бути там, коли знаходиться в каталозі non-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змінної середовища.
теппік

Відповіді:


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)]$ '
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.