如何修改zsh中的anaconda环境提示符?

如何修改zsh中的anaconda环境提示符?

为了使我的命令行提示符在 zsh 上看起来更漂亮,我将这一行添加到.zshrc

PROMPT='%F{green}%n%f %B%F{blue}%1~%f%b $ '

但是,当我激活 anaconda 虚拟环境(即conda activate base)时,我会在左侧看到虚拟环境的名称,如下所示:

(base) myusername ~ $

我想知道如何修改提示的虚拟环境部分(例如,我们想将其着色为青色)

答案1

第一步是通过运行来禁用默认的 conda 提示符修饰符,conda config --set changeps1 false正如他们已经提到的那样。

接下来,将以下内容添加到您的.zshrc

# Determines prompt modifier if and when a conda environment is active
precmd_conda_info() {
  if [[ -n $CONDA_DEFAULT_ENV ]]; then
    CONDA_ENV="($CONDA_DEFAULT_ENV) "
  # When no conda environment is active, don't show anything
  else
    CONDA_ENV=""
  fi
}

# Run the previously defined function before each prompt
precmd_functions+=( precmd_conda_info )

# Allow substitutions and expansions in the prompt
setopt prompt_subst

PROMPT='%F{cyan}$CONDA_ENV%f%F{green}%n%f %B%F{blue}%1~%f%b $ '

这样,conda 环境就会在提示符的其余部分之前显示在括号内,并以青色显示。

如果您希望它显示为粗体,请将该部分括在 %B 和 %b 中:

PROMPT='%B%F{cyan}$CONDA_ENV%b%f%F{green}%n%f %B%F{blue}%1~%f%b $ '

如果您想使用更多颜色,请运行 来检查您的终端是否支持echo $TERM。如果返回xterm-256color,则可以将大括号中的颜色替换为 0 到 255 之间的值。您可以查看颜色这里

答案2

跑步:

conda config --set changeps1 False

或添加changeps1: False到您的.condarc.

答案3

看起来 阿尔勒皮的回答切换 conda 环境时失败。

这可以通过一个小的改变来解决:

  1. 仍然,conda config --set changeps1 false
  2. 将此片段附加到您的~/.zshrc
    # ~/.zshrc
    precmd_get_conda_env_name() {
    if [[ -n $CONDA_PREFIX ]]; then
        if [[ $(basename $CONDA_PREFIX) == "miniconda3" ]]; then
            CONDA_ENV="base"
        else
            CONDA_ENV="$(basename $CONDA_PREFIX)"
        fi
    else
        CONDA_ENV=""
    fi
    }
    precmd_functions+=( precmd_get_conda_env_name )
    precmd_update_prompt() {
        PROMPT=$'\n'"%B%F{black}[%F{green}%D{%m/%d %H:%M}%F{black}] %F{red}%n%F{black}@%F{yellow}%m%F{black}:%F{cyan}%~"$'\n'"%F{magenta}($CONDA_ENV)%F{blue} ➜ %f%b"
    }
    precmd_functions+=( precmd_update_prompt )
    

它最终看起来像:

  • iTerm2

    MacOS、iTerm2

  • VSCode集成终端

    VSCode集成终端

相关内容