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 > '

私は細かいことにこだわり、1 つの問題を修正しようとしていますが、その方法がわかりません。Git リポジトリにいる場合は、次のプロンプトが表示されます。

git-repo-123 (branch-323232) >

しかし、git リポジトリにいない場合は、次のプロンプトが表示されます。

some-non-git-repo-dir >

ご覧のとおり、 git リポジトリにいないときにsome-non-git-repo-dir、 と の間に 2 つのスペースがあります>。これを修正するにはどうすればいいでしょうか? これは非常に些細な問題だとはわかっていますが、解決策を見つけるために Google に何と入力すればよいかわかりません。私は zsh をあまり使い慣れていないので、シェルを好みに合わせて構成しようとしています。回答してくださる皆様、前もって感謝いたします。

答え1

文字列を調べるとPROMPT、5 つのブロックで構成されていることがわかります。

  1. 青色は現在のディレクトリ
  2. 空間
  3. 赤はgitブランチ
  4. 空間
  5. プロンプトインジケータ(>

したがって、git リポジトリ内にいない場合は、3 番目のブロックは空になり、隣接する 2 つの空白 (ブロック 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> '

関連情報