【进阶】ZShell提示符增加Git分支显示

前言

上一期我们讲到ZShell修改提示符,但是今天看到别人的oh-my-zshell有炫彩Git分支提示,这我肯定不能认输,但是又不想安装完整的oh-my-zshell,所以在上一次的ZShell手动修改提示符的基础上作了改进,实现了展示Git分支的功能

添加函数

  • 添加一个获取Git分之的函数
1
2
3
function parse_git_branch() {
git branch 2> /dev/null | sed -n -e 's/^\* \(.*\)/[\1]/p'
}

设置动态刷新分支显示

  • 踩坑:如果没加这句代码,那么提示符只会在启动时刷新一次,不会实现跳转目录更新Git分支信息
1
setopt PROMPT_SUBST

调用函数

  • 通过$(parse_git_branch)调用Git分支信息检测函数
  • 这里只做范例,请根据需求自己修改提示符的其他变量
  • 踩坑:setopt PROMPT_SUBST必须需要配合单引号才能生效,双引号还是不会实现跳转目录更新Git分支信息
1
export PROMPT='$(parse_git_branch) '

完成

  • 我的提示符示例
1
2
3
4
5
6
7
autoload -U colors && colors
function parse_git_branch() {
git branch 2> /dev/null | sed -n -e 's/^\* \(.*\)/[\1]/p'
}
setopt PROMPT_SUBST
export PROMPT='[ %{$fg[cyan]%}%d%{$reset_color%} ] %{$fg[green]%}$(parse_git_branch)%{$reset_color%}
$ '

参考文献

ICode9
Dovov编程网
Github
QAStack