电脑安装 anaconda 后,激活环境导致 zsh 主题失效解决方法

原因

系统: ArchLinux 终端shell: zsh 在安装 anaconda 后,激活环境后,zsh终端的主题就会失效

╭─zheng@zhengArch ~
╰─$ conda activate base
(base)

终端只剩下 conda 的环境名,当我退出 conda 环境是,zsh 主题还是不能恢复,必须重启终端才可以 退出环境:

╭─zheng@zhengArch ~
╰─$ conda activate base
(base) conda deactivate
pwd
/home/zheng

解决方法

执行如下命令可以解决

conda config --set changeps1 False

参考资料:


美化 oh-my-zsh 主题

可以在 oh-my-zsh 主题配置文件里使用如下函数来获取当前 conda 环境名

# Conda info
local conda_info='$(conda_prompt_info)'
conda_prompt_info() {
if [ -n "$CONDA_DEFAULT_ENV" ]; then
echo -n "($CONDA_DEFAULT_ENV) "
else
echo -n ""
fi
}

bira.zsh-theme 主题文件全貌:

local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
local user_host="%B%(!.%{$fg[red]%}.%{$fg[green]%})%n@%m%{$reset_color%} "
local user_symbol='%(!.#.$)'
local current_dir="%B%{$fg[blue]%}%~ %{$reset_color%}"

local vcs_branch='$(git_prompt_info)$(hg_prompt_info)'
local rvm_ruby='$(ruby_prompt_info)'
local venv_prompt='$(virtualenv_prompt_info)'

ZSH_THEME_RVM_PROMPT_OPTIONS="i v g"


# Conda info
local conda_info='$(conda_prompt_info)'
conda_prompt_info() {
if [ -n "$CONDA_DEFAULT_ENV" ]; then
echo -n "($CONDA_DEFAULT_ENV) "
else
echo -n ""
fi
}


PROMPT="╭─${user_host}${conda_info}${current_dir}${rvm_ruby}${vcs_branch}${venv_prompt}
╰─%B${user_symbol}%b "
RPROMPT="%B${return_code}%b"

ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg[yellow]%}‹"
ZSH_THEME_GIT_PROMPT_SUFFIX="› %{$reset_color%}"
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[red]%}●%{$fg[yellow]%}"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[yellow]%}"

ZSH_THEME_HG_PROMPT_PREFIX="$ZSH_THEME_GIT_PROMPT_PREFIX"
ZSH_THEME_HG_PROMPT_SUFFIX="$ZSH_THEME_GIT_PROMPT_SUFFIX"
ZSH_THEME_HG_PROMPT_DIRTY="$ZSH_THEME_GIT_PROMPT_DIRTY"
ZSH_THEME_HG_PROMPT_CLEAN="$ZSH_THEME_GIT_PROMPT_CLEAN"

ZSH_THEME_RUBY_PROMPT_PREFIX="%{$fg[red]%}‹"
ZSH_THEME_RUBY_PROMPT_SUFFIX="› %{$reset_color%}"

ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX="%{$fg[green]%}‹"
ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX="› %{$reset_color%}"
ZSH_THEME_VIRTUALENV_PREFIX="$ZSH_THEME_VIRTUAL_ENV_PROMPT_PREFIX"
ZSH_THEME_VIRTUALENV_SUFFIX="$ZSH_THEME_VIRTUAL_ENV_PROMPT_SUFFIX"
Published At