Das Folgende ist meine .zshrc
Datei:
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-dir
und , >
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 PROMPT
Zeichenfolge untersuchen, werden Sie feststellen, dass sie aus fünf Blöcken besteht:
- in blau das aktuelle Verzeichnis
- RAUM
- in rot der Git-Zweig
- RAUM
- 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_info
Stil 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> '