如何在xonsh提示符中有条件地使用{env_name}

时间:2018-11-08 14:33:46

标签: python xonsh

xonsh外壳中,如何使用在$PROMPT定义中用作条件的虚拟环境的名称?

(更多详细信息:xonsh shell本身有一个名为'xonsh'的虚拟环境,但是我不希望在提示中显示该venv,但是任何其他激活的venv都应在提示中显示)

1 个答案:

答案 0 :(得分:2)

首先查看xonsh/prompt/env.py以了解我们如何定义env_name函数-由于您使用virtualenv,因此可以在xonshrc中执行以下操作:

import os.path

def env_name_cust(pre_chars="(", post_chars=")"):
    """Extract the current environment name from $VIRTUAL_ENV 
    """
    env_path = __xonsh__.env.get("VIRTUAL_ENV", "")
    env_name = os.path.basename(env_path)
    if env_name and env_name != 'xonsh':
        return pre_chars + env_name + post_chars

然后将该函数添加到$PROMPT_FIELDS字典中:

$PROMPT_FIELDS['env_name_cust'] = env_name_cust

然后,您可以在{env_name_cust}格式字符串中使用$PROMPT代替默认的{env_name}

如果愿意,您也可以使用${...}来代替__xonsh__.env