【发布时间】:2016-09-25 17:33:46
【问题描述】:
我正在尝试自定义我的 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
【问题讨论】:
-
这纯粹是一个 zsh 问题。 bash 在标题或标记中都没有位置。请不要标记其他外壳,除非您完全确定您的问题适用于两者(针对两者的测试代码,得到相同的结果)——直接引用错误适用于 bash,但您的复制器由于其他原因无法在那里工作.
-
顺便说一句——使用括号进行分组是非常低效的。最好使用大括号:
{ git symbolic-ref -q HEAD || git name-rev --name-only --no-undefined --always HEAD; } 2>/dev/null- 这样您就不会产生子外壳开销。
标签: zsh