我使用 zsh 主题intheloops
。当没有虚拟环境处于活动状态时,主题看起来像这样
-- an empty line --
[sourabh@skynet] ~/Code/django_apps/cope (master) ⚡
❯
当环境处于活动状态时,
(env name)
[sourabh@skynet] ~/Code/django_apps/cope (master) ⚡
❯
当某些虚拟环境处于活动状态时我可以让它看起来像这样吗?
-- empty line --
(env name) [sourabh@skynet] ~/Code/django_apps/cope (master) ⚡
❯
.zsh-theme
文件
local return_status="%{$fg[red]%}%(?..⏎)%{$reset_color%}"
local host_color="green"
if [ -n "$SSH_CLIENT" ]; then
local host_color="red"
fi
PROMPT='
%{$fg_bold[grey]%}[%{$reset_color%}%{$fg_bold[${host_color}]%}%n@%m%{$reset_color%}%{$fg_bold[grey]%}]%{$reset_color%} %{$fg_bold[blue]%}%10c%{$reset_color%} $(git_prompt_info) $(git_remote_status)
%{$fg_bold[cyan]%}❯%{$reset_color%} '
RPROMPT='${return_status}%{$reset_color%}'
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}(%{$fg[yellow]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[yellow]%}) %{$fg[pink]%}⚡%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[grey]%})"
ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE="%{$fg_bold[magenta]%}↓%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE="%{$fg_bold[magenta]%}↑%{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE="%{$fg_bold[magenta]%}↕%{$reset_color%}"
答案1
提示符的更改方式在虚拟环境目录内的脚本中定义。此文件由模板bin/activate
创建。不幸的是,模板提供的唯一提示符修改方法是添加前缀或使用 进行设置。virtualenv
(env name)
--prompt
为了按照您想要的方式修改提示,我建议绕过提示的设置并修改主题文件中bin/activate
的定义。PROMPT
首先将以下内容添加到您的.zsh-theme
(或.zshrc
)
export VIRTUAL_ENV_DISABLE_PROMPT=yes
function virtenv_indicator {
if [[ -z $VIRTUAL_ENV ]] then
psvar[1]=''
else
psvar[1]=${VIRTUAL_ENV##*/}
fi
}
add-zsh-hook precmd virtenv_indicator
%(1V.(%1v).)
并在 的定义的第二行前面添加PROMPT
。它应该看起来像这样:
PROMPT='
%(1V.(%1v).)%{$fg_bold[grey]%}[%{$reset_color%}%{$fg_bold[${host_color}]%}%n@%m%{$reset_color%}%{$fg_bold[grey]%}]%{$reset_color%} %{$fg_bold[blue]%}%10c%{$reset_color%} $(git_prompt_info) $(git_remote_status)
%{$fg_bold[cyan]%}❯%{$reset_color%} '
%(1V.%{$fs_bold[yellow]%}(%1v)%{$reset_color%}.)
例如,如果您想要一些颜色,您可以添加。
解释:
virtenv_indicator
每次创建提示之前都会被调用。它会检查是否$VIRTUAL_ENV
已设置且不为空。如果是,它会将数组的第一个元素设置$psvar
为$VIRTUAL_ENV
,并将最后一个元素之前的所有内容/
(类似basename $VIRTUAL_ENV
但更便宜)移除
在的定义中PROMPT
%(1V.(%1v).)
检查的第一个元素是否$psvar
被设置并且不为空(%(1V.true-text.false-text)
)并添加此元素的内容加上一些括号((%1v)
)
export VIRTUAL_ENV_DISABLE_PROMPT=yes
禁用脚本的任何提示设置bin/activate
。
答案2
Oh-my-zsh
现在包括一个virtualenv
插件,因此只需在中启用它即可config
。
答案3
如果你使用价格,您可以在这里找到有关如何显示活动虚拟环境的说明:https://github.com/sorin-ionescu/prezto/tree/master/modules/python#theming