bash
这在(parse_git_branch
是定义的函数)中有效
export PS1="\$(parse_git_branch)"
但我无法找出 中的等效值zsh
。
笔记:如果我做
PROMPT="$(parse_git_branch)"
它似乎有效,但实际上它正在我设置提示时运行命令,这不是重点。
答案1
你必须包括
setopt PROMPT_SUBST
在你的.zshrc
,man zshall
在解释迅速扩张部分:
如果设置了 PROMPT_SUBST 选项,则提示字符串首先进行参数扩展、命令替换和算术扩展。
答案2
实际上,您的问题不仅仅是设置PROMPT_SUBST
:您在脚本中使用双引号强制在设置变量时对函数进行求值PROMPT
。您只需要在计算提示时进行求值,即必须使用单引号。
答案3
正如 akira 所说,您必须使用 prompt subst。这是我的早期代码(仍在开发中):
setopt PROMPT_SUBST
PROMPT='$(parse_git_branch)'
或更好
setopt PROMPT_SUBST
PROMPT='[$PR_MAGENTA%n$PR_NO_COLOR@$PR_GREEN%U%m%u$PR_NO_COLOR:$PR_RED%2c$PR_NO_COLOR]$(parse_git_branch) %(!.#.$)'