将函数放入 PS1(Zsh)?

将函数放入 PS1(Zsh)?

bash这在(parse_git_branch是定义的函数)中有效

export PS1="\$(parse_git_branch)"

但我无法找出 中的等效值zsh

笔记:如果我做

PROMPT="$(parse_git_branch)"

它似乎有效,但实际上它正在我设置提示时运行命令,这不是重点。

答案1

你必须包括

setopt PROMPT_SUBST

在你的.zshrcman 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) %(!.#.$)'

相关内容