アインシュタインの電話番号
2011.07.12
VimのステータスラインにGitのブランチ名を表示する(右側に)

前回の記事で、とりあえずMacのターミナルでGitのブランチ名を表示できたので、そのきっかけの元記事VimのステータスラインにGitのブランチ名を表示するを実行してみた。

記事のとおりにやったらサクっとブランチ名を表示できたんだけど、そのままだと見た目が思い通りではなかったので、ちょっとカスタマイズしてみた。こんな感じ。

MacVimのカスタマイズ後

そう、ブランチ名を右側に表示したかった。以下はそれについての備忘録。

Gitのブランチ名を右側に表示する

まず前提として、VimのステータスラインにGitのブランチ名を表示する方法については、id:marutanmさんのこちらの記事を見てもらえばおk(丸投げ)

上記の記事の通りに設定して、既にGitのブランチ名の表示はできてるとして、これをそのまま使うとそれまで使っていたカスタマイズしたステータスラインの表示と変わってしまう。今まで使っていた.vimrcのstatusline部分はだいたいこんな感じ。それぞれの記号の意味も知らずにコピペして使ってた。

set statusline=%<[%n]%m%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %F%=%l,%c%V%8P

それで、このオプションを1個ずつ分解して、記号の意味を調べて、ちょっと修正を加えつつ、Gitのブランチ名が右側に来るようにしたのが以下。

" ステータスラインの表示
  set statusline=%<     " 行が長すぎるときに切り詰める位置
  set statusline+=[%n]  " バッファ番号
  set statusline+=%m    " %m 修正フラグ
  set statusline+=%r    " %r 読み込み専用フラグ
  set statusline+=%h    " %h ヘルプバッファフラグ
  set statusline+=%w    " %w プレビューウィンドウフラグ
  set statusline+=%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}  " fencとffを表示
  set statusline+=%y    " バッファ内のファイルのタイプ
  set statusline+=\     " 空白スペース
if winwidth(0) >= 130
  set statusline+=%F    " バッファ内のファイルのフルパス
else
  set statusline+=%t    " ファイル名のみ
endif
  set statusline+=%=    " 左寄せ項目と右寄せ項目の区切り
  set statusline+=%{fugitive#statusline()}  " Gitのブランチ名を表示
  set statusline+=\ \   " 空白スペース2個
  set statusline+=%1l   " 何行目にカーソルがあるか
  set statusline+=/
  set statusline+=%L    " バッファ内の総行数
  set statusline+=,
  set statusline+=%c    " 何列目にカーソルがあるか
  set statusline+=%V    " 画面上の何列目にカーソルがあるか
  set statusline+=\ \   " 空白スペース2個
  set statusline+=%P    " ファイル内の何%の位置にあるか

これで最初のキャプチャのように、右側にGitのブランチ名を表示させることができた。

今回の件とは関係ないけど、現状はウィンドウの横幅によってファイル名をフルパスファイル名だけか切り替えてるけど、できればバッファの横幅で判定するようにしたいなぁと思いつつ面倒で調べてない。とりあえずブランチ名を希望通りに表示する環境は整った。


今こそ!git の branch を vim のステータスラインに表示!!するとき!!! - Meltdown Countdown