python - 如何在 xonsh 提示符下有条件地使用 {env_name}
问题描述
在xonsh
shell 中,我如何使用我正在使用的虚拟环境的名称作为定义中的条件$PROMPT
?
(更详细地说:我有一个调用'xonsh'
xonsh shell 本身的虚拟环境,但我不希望这个 venv 显示在提示符中,但任何其他激活的 venv 都应该显示在提示符中。)
解决方案
首先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
推荐阅读
- java - Java/处理:基于 A* 图形节点的游戏
- f# - Lazy<'T> 与匿名函数
- python-3.x - 如何根据熊猫中的条件替换列之间的值?
- ios - 如何在表格视图中快速添加页脚作为附加信息
- angular - 如何避免组件Angular中的重复代码?
- android - 带有自定义键盘的 UI Automator。找到确切的键盘按钮并单击它
- python - 如何自动关闭光栅光栅直方图
- google-cloud-platform - 我可以将我自己的凭据数据库与 Google Identity Platform 连接起来,为 SSO - OpenID Connect 身份验证构建自定义身份提供者吗?
- mysql - 如何获得特殊计数
- python - Python:math.pow() 与 **?