我正在尝试自定义我的zsh提示符,并希望每次生成提示时都使用git命令评估函数。我正在使用setopt PROMPT_SUBST
,但它似乎不起作用。这是我的zshrc:
setopt PROMPT_SUBST
autoload -U colors && colors # Enable colors
# Show Git branch/tag, or name-rev if on detached head
parse_git_branch() {
echo "PARSING GIT BRANCH"
(git symbolic-ref -q HEAD || git name-rev --name-only --no-undefined --always HEAD) 2> /dev/null
}
prompt() {
echo -n "%/"
echo "$(git status)"
}
PS1="$(prompt)"
这是我setopt
的输出:
interactive
login
monitor
nonomatch
promptsubst
shinstdin
zle
答案 0 :(得分:1)
您需要延迟调用prompt
,直到显示提示为止;通过使用单引号来做到这一点:
PS1='$(prompt)'
更好的想法是定义一个设置PS1
的函数,然后将该函数添加到precmd_functions
数组中,以便在显示每个提示之前执行该函数。
prompt () {
PS1="%/$(git status)"
}
precmd_functions+=(prompt)