You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置ZSH提示符,将Git与虚拟环境信息合并显示?

解决ZSH主题中Git与虚拟环境信息合并显示的问题

解决方案步骤

1. 自定义整合信息的函数

在你的ZSH配置文件(比如~/.zshrc)中添加以下自定义函数,用于合并Git和虚拟环境信息:

git_venv_prompt_info() {
  local git_info=""
  local venv_info=""

  # 检查当前目录是否为Git仓库,获取分支信息
  if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
    git_info="git:%{$fg_bold[white]%}$(git rev-parse --abbrev-ref HEAD)%{$reset_color%}"
  fi

  # 检查是否激活了虚拟环境,获取环境名称
  if [[ -n "$VIRTUAL_ENV" ]]; then
    venv_info="env:%{$fg_bold[white]%}$(basename "$VIRTUAL_ENV")%{$reset_color%}"
  fi

  # 组合两种信息
  local combined_info=""
  if [[ -n "$git_info" && -n "$venv_info" ]]; then
    combined_info="$git_info $venv_info"
  elif [[ -n "$git_info" ]]; then
    combined_info="$git_info"
  elif [[ -n "$venv_info" ]]; then
    combined_info="$venv_info"
  fi

  # 仅当有信息时输出带格式的内容
  if [[ -n "$combined_info" ]]; then
    echo "%{$fg_bold[green]%} ⟜[%{$fg[white]%}$combined_info%{$fg_bold[green]%}]⊸"
  fi
}

2. 修改PROMPT配置

将原来PROMPT中的$(git_prompt_info) $(virtualenv_prompt_info)替换为自定义函数调用$(git_venv_prompt_info),修改后的PROMPT如下:

PROMPT='%{$fg_bold[green]%}╭─[%{$reset_color%}%{$fg_bold[white]%}Swidenn %{$reset_color%}%{$fg_bold[green]%}⚡%{$reset_color%}%{$fg_bold[white]%}%M%{$reset_color%}%{$fg_bold[green]%}]$(git_venv_prompt_info)%{$reset_color%}%{$fg_bold[green]%}▷ %{$reset_color%}%{$fg[white]%}%~
%{$reset_color%}%{$fg_bold[green]%}╰─[%{$reset_color%}%{$fg[white]%}%!%{$reset_color%}%{$fg_bold[green]%}]-> '

3. 移除原Git主题变量(可选)

因为自定义函数已经处理了Git信息的格式,你可以删除之前设置的ZSH_THEME_GIT_PROMPT_PREFIX和ZSH_THEME_GIT_PROMPT_SUFFIX变量,避免冲突。

效果说明

  • 默认状态下(无Git仓库、无虚拟环境):提示符和你原来的默认样式一致,不会显示额外的括号内容。
  • 仅在Git仓库中:显示⟜[git:分支名]⊸。
  • 仅激活虚拟环境:显示⟜[env:环境名]⊸。
  • 同时存在Git仓库和虚拟环境:显示⟜[git:分支名 env:环境名]⊸,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Swidenn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:23:11