I have the following code in my .zshrc:
local ruby_version=''
if which rvm-prompt &> /dev/null; then
ruby_version="$(rvm-prompt i v g)"
else
if which rbenv &> /dev/null; then
ruby_version="$(rbenv version | sed -e "s/ (set.*$//")"
fi
fi
我在RPS1提示符中有以下代码:
RPS1='${PR_GREEN}$(virtualenv_info)%{$reset_color%} ${PR_RED}${ruby_version}%{$reset_color%}'
< p >(为简洁起见,未显示设置PR_颜色或确定虚拟环境的代码 - 两者都有效。)
< p >当创建新的shell(在iTerm2中的新窗口或新选项卡中)时,Ruby信息是正确的。但是,如果我切换到使用不同Ruby的项目(由 < code > .ruby-version 文件确定),则右提示显示的Ruby信息不会刷新。如果我重新加载我的 .zshrc
文件,右提示将被刷新。
< p >我需要将确定Ruby版本的代码包含在函数中吗?顺便说一下,我的 .zshrc 中也有 setopt promptsubst
。
< p >我缺少什么阻止右提示在更改目录时刷新?
$(rbenv version | see -e "s/ (set.$//")
这行代码,那么我就可以在我的右提示符中看到该字符串。当该行被双引号包围时,如原始问题所示,只有在加载~/.zshrc
后才能看到当前的Ruby版本。 - Mark Nichols