Welcome to FutureAppLaboratory

v=(*^ワ^*)=v

Zshのpromptにvcsを表示する

| Comments

What is vcs?

バージョン管理システム(Version Control System)。

zshというshellを使い始めたので、便利なカスタマイズプラグインを紹介します。
今回はこちらのプラグインzsh-vcs-promptを使って、zshのpromptにバージョン管理システム(git/svn/hg )の情報を表示ます。
現在作業中branchは一目瞭然ですね。
zsh_vcs_snapshot

各図形の意味は

Remote status:
↑ n : ahead
↓ n : behind
Local status:
✔ : repository clean
● n : there are n staged files
✖ n : there are n unmerged files
✚ n : there are n changed but unstaged files
… n : there are n untracked files
⚑n : there are n stashed
branch(n) : there are n unmerged commits to master

How to use?

  1. まずは、どこかのディレクトリに、zsh-vcs-promptをclone。私の場合は~/projects/に。

  2. zshの設定ファイル.zshrcに追加すればOK。
1
2
3
source ~/projects/zsh-vcs-prompt/zshrc.sh
ZSH_VCS_PROMPT_ENABLE_CACHING='true'
RPROMPT='$(vcs_super_info)'

これで右端に表示されました(RPROMPTはright promptの意味なので)
zsh_vcs_rprompt

Customize it

右端に表示されると画面が狭い時邪魔になるので、私の場合、promptの末に表示したい。少しカストマイズが必要です。

  • まずこれをコメントアウト
1
#RPROMPT='$(vcs_super_info)'
  • 以下のコードを.zshrcに追加。(hookしなくても動けますが、promptの中身は更新されないので、ディレクトリ移動しても、gitコマンドを実行しても変わらない。)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
typeset -ga precmd_functions

precmd_functions+='update_prompt'

# promptを作るメソッド
get_prompt() {
  result="%{$fg[yellow]%}%T%{$reset_color%} %{$fg_bold[yellow]%}%n%{$reset_color%}@%{$fg_bold[magenta]%}%m%{$reset_color%}:%{$fg_bold[blue]%}%3~%{$reset_color%} $(vcs_super_info)%(!.#.$) "
}

# コマンド実行する前にhookとして実行、promptにあるvcsを更新
update_prompt() {
  get_prompt
  PROMPT=$result
}

これでOK。 zsh_vcs_snapshot

Comments