激活虚拟环境时自定义venv提示不更新

-1 投票
1 回答
37 浏览
提问于 2025-04-14 16:56

我尝试通过在我的 .zshrc 文件中添加以下内容来定制我的虚拟环境提示符:

...
export VIRTUAL_ENV_DISABLE_PROMPT=1
if [[ -v VIRTUAL_ENV ]]; then
    PROMPT='%F{green}(venv)%f'$PROMPT
fi
...

这只有在我激活虚拟环境后执行 $ source ~/.zshrc 时才有效。

我通过添加下面的别名让它自动工作,但我在想有没有更好的方法让它自动生效呢?

alias venv='source ./venv/bin/activate; source ~/.zshrc'
alias deactivate='deactivate; source ~/.zshrc'

1 个回答

0

也许对你的情况来说,一个简单的方法是把提示定义成这样:

vprompt='%F{green}(venv)%f' # Prefix for venv prompt
PROMPT='${VIRTUAL_ENV+$vprompt}'$PROMPT

如果在提示评估时设置了VIRTUAL_ENV,那么+会让$vprompt显示在你原来的提示前面。如果没有设置VIRTUAL_ENV,就什么都不会显示,你只会看到你原来的提示。

撰写回答