Как использовать {env_name} условно в приглашении xonsh
В xonsh
Оболочка, как я могу использовать имя виртуальной среды, которую я использую в качестве условия в определении $PROMPT
?
(Подробнее: у меня есть виртуальная среда под названием 'xonsh'
для самой оболочки xonsh, но я не хочу, чтобы этот venv показывался в приглашении, но любой другой активированный venv должен отображаться в приглашении.)
1 ответ
Начните с просмотра 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
если хочешь.