PS1变量展示优化

@lucas  April 23, 2023

修改PS1变量,可以模仿zsh的展示效果。
设置常用的git命令别名

# Git 常用命令
alias gco='git checkout'
alias gcma='git commit --amend'
alias gcmm='git commit -m'
alias gaa='git add -A'

# Gerrit push
gpo() {
    local branch

    branch=$(git symbolic-ref --quiet --short HEAD) || {
        printf 'gpo: 当前处于 detached HEAD,无法确定目标分支\n' >&2
        return 1
    }

    git push origin "HEAD:refs/for/$branch"
}

# Prompt Git 分支
git_branch=''
git_branch_prefix=''

find_git_branch() {
    local branch

    # 每次都先清空,避免保留上一次状态
    git_branch=''
    git_branch_prefix=''

    if branch=$(git symbolic-ref --quiet --short HEAD 2>/dev/null); then
        git_branch_prefix='git:'
        git_branch="($branch)"
    elif git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
        git_branch_prefix='git:'
        git_branch='(detached)'
    fi
}

# 避免重复添加,适用于 PROMPT_COMMAND 为普通字符串的情况
case ";${PROMPT_COMMAND:-};" in
    *";find_git_branch;"*) ;;
    *)
        PROMPT_COMMAND="find_git_branch${PROMPT_COMMAND:+; $PROMPT_COMMAND}"
        ;;
esac

green=$'\[\e[1;32m\]'
red=$'\[\e[1;31m\]'
blue=$'\[\e[1;34m\]'
magenta=$'\[\e[1;35m\]'
normal_colours=$'\[\e[0m\]'

PS1="${red}➜  ${green}\W ${blue}\${git_branch_prefix}${magenta}\${git_branch}${normal_colours}\\\$ "

添加新评论