Mac bash terminal 配置代码高亮 Git状态显示
程序员文章站
2024-02-23 15:09:58
...
git complition ~/.git-completion.bash 见
https://github.com/git/git/blob/master/contrib/completion/git-completion.bash
alias ll='ls -la'
if [ -f ~/.git-completion.bash ]; then
. ~/.git-completion.bash
fi
#Git branch status
function git_status {
local unknown untracked stash clean ahead behind staged dirty diverged
unknown='0;34' # blue
untracked='0;32' # green
stash='0;32' # green
clean='0;32' # green
ahead='0;33' # yellow
behind='0;33' # yellow
staged='0;96' # cyan
dirty='0;31' # red
diverged='0;31' # red
if [[ $TERM = *256color ]]; then
unknown='38;5;20' # dark blue
untracked='38;5;76' # mid lime-green
stash='38;5;76' # mid lime-green
clean='38;5;82' # brighter green
ahead='38;5;226' # bright yellow
behind='38;5;142' # darker yellow-orange
staged='38;5;214' # orangey yellow
dirty='38;5;202' # orange
diverged='38;5;196' # red
fi
branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null)
if [[ -n "$branch" ]]; then
if [[ "$branch" == 'HEAD' ]]; then
branch=$(git rev-parse --short HEAD 2>/dev/null)
fi
git_status=$(git status 2> /dev/null)
# If nothing changes the color, we can spot unhandled cases.
color=$unknown
if [[ $git_status =~ 'Untracked files' ]]; then
color=$untracked
branch="${branch}+"
fi
if git stash show &>/dev/null; then
color=$stash
branch="${branch}*"
fi
if [[ $git_status =~ 'working directory clean' ]]; then
color=$clean
fi
if [[ $git_status =~ 'Your branch is ahead' ]]; then
color=$ahead
branch="${branch}"
fi
if [[ $git_status =~ 'Your branch is behind' ]]; then
color=$behind
branch="${branch}"
fi
if [[ $git_status =~ 'Changes to be committed' ]]; then
color=$staged
fi
if [[ $git_status =~ 'Changed but not updated' ||
$git_status =~ 'Changes not staged' ||
$git_status =~ 'Unmerged paths' ]]; then
color=$dirty
fi
if [[ $git_status =~ 'Your branch'.+diverged ]]; then
color=$diverged
branch="${branch}!"
fi
printf "\033[%sm%s\033[0m" "$color" "($branch)"
fi
return 0
}
#bles colorin the terminal bash shell export
export CLICOLOR=1
#sets up thecolor scheme for list export
export LSCOLORS=gxfxcxdxbxegedabagacad
#sets up theprompt color (currently a green similar to linux terminal)
export PS1='\[\033[01;32m\]\[email protected]\h\[\033[00m\]:\[\033[01;36m\]\W\[\033[01;31m\]$(git_status)\[\033[0m\]\$ '
#enables colorfor iTerm
export TERM=xterm-256color