2019年9月30日 星期一

Linux shell顯示git branch

在shell上直接顯示git branch是很方便的資訊
以下是在不同的shell上的設定
.bashrc
 parse_git_branch() {  
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'  
 }  
 export PS1="\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ "  

.zshrc
 setopt prompt_subst  
 autoload -Uz vcs_info  
 zstyle ':vcs_info:*' stagedstr 'M'   
 zstyle ':vcs_info:*' unstagedstr 'M'   
 zstyle ':vcs_info:*' check-for-changes true  
 zstyle ':vcs_info:*' actionformats '%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '  
 zstyle ':vcs_info:*' formats \  
  '%F{5}[%F{2}%b%F{5}] %F{2}%c%F{3}%u%f'<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"><code>parse_git_branch() {  
    git branch 2&gt; /dev/null &#124; sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'  
 }  
 export PS1=&quot;\u@\h \[\033[32m\]\w\[\033[33m\]\$(parse_git_branch)\[\033[00m\] $ &quot;  
 </code></pre>  
 zstyle ':vcs_info:git*+set-message:*' hooks git-untracked  
 zstyle ':vcs_info:*' enable git   
 +vi-git-untracked() {  
  if [[ $(git rev-parse --is-inside-work-tree 2> /dev/null) == 'true' ]] && \  
  [[ $(git ls-files --other --directory --exclude-standard | sed q | wc -l | tr -d ' ') == 1 ]] ; then  
  hook_com[unstaged]+='%F{1}%f'  
 fi  
 }  
 precmd () { vcs_info }  
 PROMPT='%F{5}[%F{2}%n%F{5}] %F{3}%3~ ${vcs_info_msg_0_} %f%# '  

沒有留言: