将功能导入PS1(Zsh)?


15

这适用于bashparse_git_branch是已定义的函数)

export PS1="\$(parse_git_branch)"

但我无法弄清楚中的等效项zsh

注意:如果我这样做

PROMPT="$(parse_git_branch)"

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

Answers:


26

你必须包括

setopt PROMPT_SUBST

在您的中.zshrcman zshall在“提示扩展”部分中进行了说明:

如果设置了PROMPT_SUBST选项,则首先对提示字符串进行参数扩展,命令替换和算术扩展。


14

实际上,您的问题不仅在于设置PROMPT_SUBST:您在脚本中使用双引号会在设置PROMPT变量时强制对函数求值。仅在计算提示时才需要评估,即必须使用单引号。


5

如akira所说,您必须使用提示替代。这是我的早期代码(仍在工作):

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) %(!.#.$)'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.