有人知道怎么做吗?当我不在git目录中时,我需要/想要正确的提示来显示时间,而当我在git目录中时,我希望它显示分支。
这是我使用的配置extracted from git doc:
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'
但是要在git dir之外使用RPROMPT="%*"
。
答案 0 :(得分:0)
一种方法是将所有内容放入自己的precmd函数中。这是一个示例(将此添加到~/.zshrc
中):
my_precmd() {
vcs_info
psvar[1]=$vcs_info_msg_0_
if [[ -z ${psvar[1]} ]]; then
psvar[1]=${(%):-%*}
fi
}
autoload -Uz vcs_info
zstyle ':vcs_info:git:*' formats '%b'
autoload -Uz add-zsh-hook
add-zsh-hook precmd my_precmd
RPROMPT=%1v
一些注意事项:
vcs_info
调用内置的zsh来设置$vcs_info_msg_0_
。zstyle ...
配置来自vcs_info
的结果。psvar[1]
psvar
数组是一组特殊变量,可以在提示(%1v
)中轻松引用。if [[ -z ${psvar[1]} ]]
测试是否由vcs_info
设置了任何内容;如果结果为零长度,请改用时间。${(%):-%*}
获取时间。有几段内容:(%)
表示像提示中那样替换百分比转义符,:-
用于创建替换的匿名变量,而%*
是设置转义符的提示转义符。时间。add-zsh-hook ...
将my_precmd
添加到precmd挂钩中,因此它将在每个提示之前被调用。比直接设置precmd_functions
更好。RPROMPT=%1v
设置右侧提示以始终显示psvar[1]
的值。