自訂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 儲存庫中,我會收到以下提示:

git-repo-123 (branch-323232) >

但如果我不在 git 儲存庫中,我會收到以下提示:

some-non-git-repo-dir >

正如你所看到的,當我不在 git repo 中時,some-non-git-repo-dir和之間有兩個空格。>我怎樣才能解決這個問題?我知道這是非常小的,但我不知道在谷歌中輸入什麼來幫助我找到解決方案。我對 zsh 還很陌生,正在嘗試根據自己的喜好配置我的 shell。感謝所有提前回覆的人!

答案1

透過檢查該PROMPT字串,您會發現它由五個區塊組成:

  1. 藍色的是目前目錄
  2. 空間
  3. 紅色的是 git 分支
  4. 空間
  5. 提示符號 ( >)

因此,如果您不在 git 儲存庫中,則第三個區塊將為空,並且最終會出現兩個相鄰的空白(區塊 2 和 4)。

只有當您位於 git 儲存庫中時,您想要的是區塊 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> '

相關內容