[zsh 专属配置 PS1 | 不依靠 oh my zsh]

# -------------------------- Zsh 专属 PS1 配置(含空行+conda/venv/git) --------------------------
# 颜色定义(Zsh用%F{颜色},而非Bash的\033)
COLOR_CONDA="%F{cyan}"    # 青色(conda环境)
COLOR_VENV="%F{blue}"     # 蓝色(venv环境)
COLOR_USER="%F{magenta}"  # 紫色(用户名)
COLOR_HOST="%F{green}"    # 绿色(主机名)
COLOR_DIR="%F{yellow}"    # 黄色(当前路径)
COLOR_GIT="%F{red}"       # 红色(git分支)
COLOR_TIME="%F{default}"  # 默认色(时间)
COLOR_RESET="%f"          # 重置颜色(Zsh专用)

# 检测conda环境
conda_env() {
  [ -n "$CONDA_DEFAULT_ENV" ] && echo "(${CONDA_DEFAULT_ENV}) "
}

# 检测venv环境
venv_env() {
  [ -n "$VIRTUAL_ENV" ] && echo "($(basename $VIRTUAL_ENV)) "
}

# 检测git分支
git_branch() {
  git branch 2>/dev/null | sed -n '/^*/s/* //p' | awk '{print " ("$0")"}'
}

# ========== 核心改动:在PS1最开头加空行 ==========
PS1=$'\n'  # 先空一行(这行是关键!)
# 拼接conda/venv/用户/主机/路径/git/时间
# PS1+='${COLOR_CONDA}$(conda_env)${COLOR_RESET}'  # conda环境
PS1+='${COLOR_VENV}$(venv_env)${COLOR_RESET}'   # venv环境
PS1+='${COLOR_USER}# %n ${COLOR_RESET}@ ${COLOR_HOST}%m ${COLOR_RESET}in ${COLOR_DIR}%~ ${COLOR_RESET}'  # 用户@主机 路径
PS1+='${COLOR_GIT}$(git_branch) ${COLOR_RESET}' # git分支
PS1+='${COLOR_TIME}[%T] ${COLOR_RESET}'         # 时间(%T是24小时制HH:MM:SS)
# ========== 原换行保留,最终命令提示符在新行 ==========
PS1+=$'\n'  # 内容行和命令行之间再换行
PS1+='%$ 
$ '   # 命令提示符($自动适配普通用户/root)

# 启用Zsh的即时替换(确保函数实时执行)
setopt prompt_subst

image

posted @ 2025-11-27 03:10  十三山入秋  阅读(8)  评论(0)    收藏  举报