zsh에서 vcs_info를 사용할 때 프롬프트 사용자 정의

zsh에서 vcs_info를 사용할 때 프롬프트 사용자 정의

다음은 내 .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 repo에 있으면 다음과 같은 프롬프트가 표시됩니다.

git-repo-123 (branch-323232) >

하지만 내가 git repo에 없으면 다음과 같은 메시지가 나타납니다.

some-non-git-repo-dir >

보시다시피, git repo에 없을 때 some-non-git-repo-dir와 사이에 두 개의 공백이 있습니다. >이 문제를 어떻게 해결할 수 있나요? 나는 이것이 매우 사소한 것이라는 것을 알고 있지만 해결책에 도달하는 데 도움이 되도록 Google에 무엇을 입력해야 할지 잘 모르겠습니다. 저는 zsh를 처음 접했고 원하는 대로 쉘을 구성하려고 합니다. 미리 응답해주신 모든 분들께 감사드립니다!

답변1

문자열 을 살펴보면 다음과 PROMPT같은 5개의 블록으로 구성되어 있음을 알 수 있습니다.

  1. 파란색은 현재 디렉토리
  2. 공간
  3. 빨간색으로 git 브랜치
  4. 공간
  5. 프롬프트 표시기( >)

따라서 git repo 내부가 아닌 경우 세 번째 블록은 비어 있고 두 개의 인접한 공백(블록 2와 4)이 남게 됩니다.

당신이 원하는 것은 git repo 안에 있는 경우에만 블록 4의 공백입니다. 예를 들어 다음과 같이 공백을 스타일에 넣고 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> '

관련 정보