Настроить подсказку при использовании vcs_info в zsh

Настроить подсказку при использовании vcs_info в zsh

Ниже приведен мой .zshrcфайл:

autoload -Uz vcs_info
precmd() { vcs_info }

zstyle ':vcs_info:git:*' formats '(%b)'

setopt PROMPT_SUBST

PROMPT='%F{blue}%B%1/%b%f %F{red}%B${vcs_info_msg_0_}%b%f > '

Я придираюсь и пытаюсь исправить одну вещь, но не уверен, как это сделать. ЕСЛИ я нахожусь в репозитории git, я получаю следующее приглашение:

git-repo-123 (branch-323232) >

Но если я НЕ в репозитории git, я получаю следующее приглашение:

some-non-git-repo-dir >

Как вы видите, между some-non-git-repo-dirи есть два пробела >, когда я не в репозитории git. Как это исправить? Я знаю, что это очень незначительно, но я не уверен, что ввести в google, чтобы помочь мне найти решение. Я довольно новичок в zsh и пытаюсь настроить свою оболочку по своему вкусу. Спасибо всем, кто ответит заранее!

решение1

Рассмотрев PROMPTстроку, вы заметите, что она состоит из пяти блоков:

  1. синим цветом текущий каталог
  2. КОСМОС
  3. красным цветом обозначена ветка git
  4. КОСМОС
  5. индикатор подсказки ( >)

Таким образом, если вы не находитесь внутри репозитория git, третий блок будет пустым, и в итоге у вас будет два соседних пробела (блок 2 и 4).

То, что вам нужно, это пробел блока 4, только если вы находитесь внутри репозитория git. Вы можете добиться этого, например, поместив пробел в стиль vcs_infoи исключив его из PROMPT, например:

zstyle ':vcs_info:git:*' formats '(%b) '
PROMPT='%F{blue}%B%1/%b%f %F{red}%B${vcs_info_msg_0_}%b%f> '

Связанный контент