如何更改默认VIRTUALENV提示?(How do I change the default vi

2019-06-24 02:55发布

你如何更改默认Virtualenvwrapper提示? 默认情况下,在特定的虚拟环境中工作,用以下命令“workon <_name_of_env_>”预先考虑的virtualenv您提示的名称。 这可能,如果你不使用默认的命令提示符不良工作。

Answer 1:

如果你是在一个自定义的PS1工作(如我的时候发现了这个问题),我建议您禁用提示变化,使用export VIRTUAL_ENV_DISABLE_PROMPT=1 (见的virtualenv文档 ),并让自己的virtualenv提示,以添加到您的PS1 。

看到这个片段,我用:

function virtualenv_info(){
    # Get Virtual Env
    if [[ -n "$VIRTUAL_ENV" ]]; then
        # Strip out the path and just leave the env name
        venv="${VIRTUAL_ENV##*/}"
    else
        # In case you don't have one activated
        venv=''
    fi
    [[ -n "$venv" ]] && echo "(venv:$venv) "
}

# disable the default virtualenv prompt change
export VIRTUAL_ENV_DISABLE_PROMPT=1

VENV="\$(virtualenv_info)";
# the '...' are for irrelevant info here.
export PS1="... ${VENV} ..."


Answer 2:

默认情况下,当切换成通过命令“workon <name_of_env>”,virtualenvwrapper预先考虑沿的“(<name_of_env>)”你的命令提示行的字符串的virtualenv。 问题是,我把我的Bash提示符与线:

PROMPT_COLOR1='0;36m'
PROMPT_COLOR2='1;34m'
PS1='\n\[\033[$PROMPT_COLOR1\](\t)\[\033[$PROMPT_COLOR2\] \u @ \w \n\[\033[$PROMPT_COLOR1\]$ \[\033[0;39m\]'

这产生沿的线的命令提示:

< old_line >

(19:11:05) kevin @ ~/research 
$ 

切换到与新的虚拟环境“workon <name_of_env>”接通命令提示符是这样的:

< old_line >
(< name_of_env >)
(19:11:05) kevin @ ~/research 
$ 

这是不是我想要的,错误的颜色来引导更多的混乱。 我希望这样的事情:

< old_line >

(< name_of_env >) (19:11:05) kevin @ ~/research 
$ 

伊恩Bicking先前已经指出, virtualenvwrapper的挂钩是解决方案 ,但我想我会后我的实际代码也许拯救别人一分钟下来就行了。

我只不过是编辑文件$ WORKON_HOME / postactivate包括这些行:

# color virtualenv name properly and put it after the \n if there is one at the start of the prompt
if [ ${_OLD_VIRTUAL_PS1:0:2} == '\n' ]; then
    PS1="\n\[\033[$PROMPT_COLOR1\](`basename \"$VIRTUAL_ENV\"`) ${_OLD_VIRTUAL_PS1:2:${#_OLD_VIRTUAL_PS1}}"
else
    PS1="\[\033[$PROMPT_COLOR1\](`basename \"$VIRTUAL_ENV\"`) $_OLD_VIRTUAL_PS1 "
fi

瞧! 颜色和位置是正确的,当你直接从一个虚拟环境切换到另一个它甚至(这是我没有预料到)。



Answer 3:

我认为下面是最简单的解决方案:

添加到~/.virtualenvs/postactivate如下:

PS1="\[\e[1;33;45m\] (`basename \"$VIRTUAL_ENV\"`) \[\e[0m\]$_OLD_VIRTUAL_PS1"

:来自http://wiki.hackzine.org/development/python/virtualenv.html



Answer 4:

我通过@ ivanalejandro0的解决方案通过减磅功能的位:

function virtualenv_info {
    # Get Virtual Env
    if [[ -n "$VIRTUAL_ENV" ]]; then
        # Strip out the path and just leave the env name
        echo "(venv:${VIRTUAL_ENV##*/})"
    fi

或者,如果你感觉真的哈克:

function virtualenv_info {
    [[ -n "$VIRTUAL_ENV" ]] && echo "(venv:${VIRTUAL_ENV##*/})"
}


文章来源: How do I change the default virtualenv prompt?