Passen Sie die Eingabeaufforderung an, wenn Sie vcs_info in zsh verwenden

Passen Sie die Eingabeaufforderung an, wenn Sie vcs_info in zsh verwenden

Das Folgende ist meine .zshrcDatei:

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

Ich bin kleinlich und versuche, eine Sache zu reparieren, bin mir aber nicht sicher, wie ich das machen soll. Wenn ich in einem Git-Repo bin, erhalte ich die folgende Eingabeaufforderung:

git-repo-123 (branch-323232) >

Aber wenn ich mich NICHT in einem Git-Repo befinde, erhalte ich die folgende Eingabeaufforderung:

some-non-git-repo-dir >

Wie Sie sehen, gibt es zwei Leerzeichen zwischen some-non-git-repo-dirund , >wenn ich mich nicht in einem Git-Repo befinde. Wie kann ich das beheben? Ich weiß, dass das nur ein kleines Problem ist, aber ich bin nicht sicher, was ich bei Google eingeben soll, um eine Lösung zu finden. Ich bin ziemlich neu bei zsh und versuche, meine Shell nach meinen Wünschen zu konfigurieren. Vielen Dank im Voraus an alle, die antworten!

Antwort1

Wenn Sie die PROMPTZeichenfolge untersuchen, werden Sie feststellen, dass sie aus fünf Blöcken besteht:

  1. in blau das aktuelle Verzeichnis
  2. RAUM
  3. in rot der Git-Zweig
  4. RAUM
  5. der Eingabeaufforderungsindikator ( >)

Wenn Sie sich also nicht in einem Git-Repository befinden, ist der dritte Block leer und Sie erhalten zwei nebeneinander liegende Leerzeichen (Block 2 und 4).

Sie möchten nur dann das Leerzeichen in Block 4, wenn Sie sich in einem Git-Repository befinden. Sie können dies beispielsweise erreichen, indem Sie das Leerzeichen in den vcs_infoStil einfügen und es aus dem weglassen PROMPT, wie folgt:

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

verwandte Informationen