»
S
I
D
E
B
A
R
«
Display VCS info in prompts
October 4th, 2008 by kanru

通常 VCS (Version Control System) 都會在工作目錄底下藏一些特殊目錄用來儲存資訊,如 .svn .git .hg 等,因此我們可以在 shell prompt 上動一些手腳,當我們進到 VCS 工作目錄時,自動顯示相關的訊息在 prompt 上。

而 zsh-beta 4.3.6-dev-0+20080921-1 內建了由 Frank Terbeck 開發的 vcs_info 子系統,可以自動偵測 bzr, cdv, CVS, darcs, git, hg, mtn, p4, svk, svn, tla 等多種 VCS,並設定相關的環境變數可以顯示在 prompt 上。

zsh prompt

我的 prompt 設定如下

    autoload -Uz vcs_info && vcs_info
    zstyle ':vcs_info:' actionformats \
    '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
    zstyle ':vcs_info:' formats       \
    '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{5}]%f '
    zstyle ':vcs_info:(sv[nk]|bzr):' branchformat '%b%F{1}:%F{3}%r'
    precmd () { vcs_info }
    EXITCODE="%(?..%?%1v )"
    JOBS="%(1j.%j .)"
    local BLUE="%{^[[1;34m%}"
    local RED="%{^[[1;31m%}"
    local GREEN="%{^[[1;32m%}"
    local CYAN="%{^[[1;36m%}"
    local YELLOW="%{^[[1;33m%}"
    local NO_COLOUR="%{^[[0m%}"
    PROMPT="${RED}${EXITCODE}${CYAN}${JOBS}${YELLOW}% ${RED}%n${BLUE}@%m:${GREEN}%40<...< %B%~%b%<<"'${vcs_info_msg_0_}'"
    ${YELLOW}%# ${NO_COLOUR}"

詳細的設定請參閱 zshcontrib(3) GATHERING INFORMATION FROM VERSION CONTROL SYSTEMS


One Response  
  • Git branch in bash prompt at Kanru’s 探險日誌 writes:
    December 13th, 2008 at 8:47 pm

    [...] 之前提過 zsh 有支援在 prompt 上顯示多種 VCS 資訊的功能,不知道 bash 上是否有人寫好同樣支援這麼多種 VCS 的 library,不過目前 git 附帶的 bash completion script 中有提供自訂 PS1 的函式。 [...]


»  Substance: WordPress   »  Style: Ahren Ahimsa
© Copyright 2004-2009 Kan-Ru Chen