【发布时间】:2021-03-28 17:39:18
【问题描述】:
目前在我的.zshrc 我有以下几行来提供一些 git 信息:
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
setopt prompt_subst
RPROMPT=\$vcs_info_msg_0_
zstyle ':vcs_info:git:*' formats '%b'
这使我的 shell 如下所示:
[me@computer dir]$ main
我想将此配置从.zshrc 移出并移到使用promptinit 初始化的自定义提示中。此配置位于我的fpath 上的一个名为prompt_mycustomprompt_setup 的文件中。配置如下:
precmd_vcs_info() {
vcs_info
}
prompt_mycustomprompt_setup () {
autoload -Uz add-zsh-hook vcs_info
setopt prompt_subst
add-zsh-hook precmd precmd_vcs_info
RPROMPT=\$vcs_info_msg_0_
zstyle ':vcs_info:git:*' formats '%b'
PS1='(test)> '
}
prompt_mycustomprompt_setup "$@"
然后我从.zshrc 中删除了相关行并替换为以下行:
autoload -Uz promptinit
promptinit
prompt mycustomprompt
但是,vcs_info 没有显示,而是在我的提示中有一个恒定的静态值 $vcs_info_msg_0_:
(test)> $vcs_info_msg_0_
为什么我的提示不符合预期?
【问题讨论】: