ohmyzsh ys 主题:将 Conda 环境名集成入行内

在使用 Oh My Zsh 的经典主题 ys 时,如果你安装了 Anaconda 或 Miniconda,默认情况下 Conda 会强行在 Prompt 最前方插入一行 (base)。这不仅破坏了主题原本的双行美感,还让终端显得异常臃肿。

本文将分享如何通过微调 .zshrc,将 Conda 环境名无缝嵌入到用户名与主机名之后,并保持 ys 原汁原味的配色方案。

默认情况下,终端可能是这样的:

1
2
3
(base)
# alby@tubumu in ~/dev on git:main x [08:00:00]
$

三行显示不仅浪费空间,且视觉上非常割裂。我们期望的目标是将其压缩回两行,并让环境名成为“身份标识”的一部分:

1
2
# alby@tubumu (base) in ~/dev on git:main x [08:00:00]
$

直接将以下逻辑添加至你的 ~/.zshrc 文件末尾(确保在 ZSH_THEME=”ys” 之后):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# ----------------------------------------------------------------              
# ohmyzsh ys 主题:将 Conda 环境名集成入行内
# ----------------------------------------------------------------

# 1. 禁止 Conda 默认的换行显示(否则切换环境后,行首可能出现重复的环境名)
export CONDA_CHANGEPS1=false

# 2. 定义 Conda 环境显示格式
# 仅在环境激活时返回带括号的名称
function conda_prompt_info() {
[[ -n $CONDA_DEFAULT_ENV ]] || return
echo "($CONDA_DEFAULT_ENV) "
}

# 3. 重新定义 ys 主题的 PROMPT 核心逻辑
PROMPT="%{$terminfo[bold]$fg[blue]%}#%{$reset_color%} \
%{$fg[cyan]%}%n%{$reset_color%}@%{$fg[green]%}%m%{$reset_color%} \
%{$fg[magenta]%}\$(conda_prompt_info)%{$reset_color%}\
in %{$terminfo[bold]$fg[yellow]%}%~%{$reset_color%}\
\$(git_prompt_info) \
%{$fg[white]%}[%*]%{$reset_color%}
%{$terminfo[bold]$fg[red]%}$ %{$reset_color%}"