Как использовать {env_name} условно в приглашении xonsh - PullRequest
0 голосов
/ 08 ноября 2018

В оболочке xonsh как использовать имя виртуальной среды, которую я использую в качестве условия в определении $PROMPT?

(Подробнее: у меня есть виртуальная среда под названием 'xonsh' для самой оболочки xonsh, но я не хочу, чтобы этот venv показывался в приглашении, но любой другой активированный venv должен отображаться в приглашении.)

1 Ответ

0 голосов
/ 08 ноября 2018

Начните с просмотра 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, если хотите.

...