【Vim】Powerline でリッチなステータスラインを使う


【注意】

本記事で解説している vim-powerline はすでに deprecated とされており、開発が停止され、メンテナンスも行われていません。可能ならば、以下の記事で解説しております、powerline への乗り換えをオススメします。

PYTHON 版 POWERLINE を使ってみる
http://blog.remora.cx/2013/04/use-python-powerlin.html

前置き

Vim の設定においてステータスラインのカスタマイズは最もハマるものの一つだが、Powerline を使うとカコイイステータスラインが簡単に使えていい感じ。プラグインを導入する(+ いくつかの設定)だけで次のようなステータスラインがすぐ使える。

2012-01-24_081112.png

このプラグインが特徴的なのは、そのために専用のグリフまで用意しているところ。スクリーンショットで情報の境目に使われている のような記号がそれである。

これは既存のフォントに FontForge を使ってパッチを当てることで作成されるのだが、FontForge が簡単にインストールできる Linux、Mac OS X ではいざ知らず、Windows 環境ではなかなか大変。今回は cygwin を使うことで Windows 環境でフォントにパッチを当ててみた1

Powerline の導入

今時の Vim は各種のプラグイン管理システムのおかげでインストール・アップデートが簡単になりました。今回はプラグイン管理システムのなかでもメジャーな Vundle を使ってインストール。

Vim-users.jp – Hack #215: Vundle で plugin をモダンに管理する
http://vim-users.jp/2011/04/hack215/

.vimrcBundle 'Lokaltog/vim-powerline' と書き加えた後に、:BundleInstall! を実行するだけ。簡単なもんだ。

この状態で起動すると次のような見た目。これでも十分きれい2なのだが、どうせなら一番最初にあげたスクリーンショットのようにフォントをカスタマイズしてみよう。

2012-01-24_081835.png

FontForge の導入 @ cygwin

cygwin の設定自体は他を見てもらうことにして、FontForge を cygwin で導入するには 2 通りの方法がある。

  1. がんばってソースからコンパイル

  2. Cygwin Ports からパッケージをインストールする。

(1.) は億劫なので (2.) を使って楽しよう。手順は次のリンクを参考にした。

Cygwin Portsで本家に未だ無い、新しいパッケージをインストールする – c4se記:さっちゃんですよ☆
http://d.hatena.ne.jp/Kureduki_Maari/20111112/1321030766

やり方は簡単なので割愛。インストール時には python-fontforge パッケージにもチェック入れるの忘れないでね。

2012-01-23_211012.png

フォントにパッチを当てる

次に、目当てのフォントにパッチを当てる。ここからの作業は cygwin 上で行う。

Powerline プラグイン本体に含まれているパッチスクリプトと、フォントファイルをどこかのディレクトリにコピーしよう。

$ mkdir font && cd font
$ cp ~/.vim/bundle/vim-powerline/fontpatcher/* .
$ cp /c/Windows/fonts/Ricty*.ttf .

プログラミング用フォントとして人気の Ricty にパッチを当ててみよう。次のコマンドをたたくだけだ。

$ python fontpather Ricty-Regular.ttf
$ python fontpather Ricty-Bold.ttf

これで Ricty-Regular-Powerline.ttf 及び、Ricty-Bold-Powerline.ttf というファイルができるので、それをフォントフォルダにコピーすれば完了。

後は、.gvimrc に次の記述を足して完成。

" UTF-8 環境でないとうまく表示されない
set encoding=utf-8
" フォントサイズはお好みで
set guifont=Ricty_for_Powerline:h10
" こっちは日本語フォント
set guifontwide=Ricty:h10
" `fancy' テーマに切り替え
let g:Powerline_symbols = 'fancy'

これで gvim を再起動すれば次のように変わっているはずだ。

2012-01-23_214954.png

ちなみに、実際には今までにあげたスクリーンショットは Ricty ではなく Envy Code R を使ってる。Ricty だとうちの環境では少し表示が欠けるんだよね。何でだろ? Ricty だとこんな感じ。「IP アドレス」の“P”が欠けてる。

2012-01-24_083644.png

いくつか試した感じ、パッチは当たるものの表示がおかしい場合があった。Inconsolata は成功、Consolas は失敗。パッチに問題があるんだろうけど、これ以上はわかんない。

パッチでエラーが出たら……

もし次のようなエラーが出たのなら Python のモジュールがインストールされていない。

$ python fontpatcher Ricty-Regular.ttf
Traceback (most recent call last):
  File "fontpatcher", line 22, in <module>
    import argparse
ImportError: No module named argparse

このときは、easy_install を使ってモジュールをインストールしよう。

easy_installをインストールする – さり海馬
http://d.hatena.ne.jp/thalion/20090416/p1

$ curl -LO http://peak.telecommunity.com/dist/ez_setup.py
$ python ez_setup.py
$ easy_install argparse

これでスクリプトは問題なく動くようになるはずだ。

今後は……

ちなみにターミナルで使うとこんな感じ。

120124-0002.png

スクリーンショットは Mac OS X + iTerm2 + screen + vim でのものだが、Windows + Putty でも問題なく表示された。

Powerline で表示される情報は必要十分であるのだが、個人的に重要なカーソル下の文字の文字コードが表示されていない。この辺がカスタマイズできるのか調べてみることにする。

→作ってみました。

【Vim】Powerline に文字コード表示機能をつける – blog.remora.cx
http://blog.remora.cx/2012/01/show-charcode-on-powerline.html


  1. FontForge を Windows で使うというだけならば、unofficial fontforge-mingw に書かれている方法が簡単だ。でも、今回のパッチは Python スクリプトで書かれてるので、これと簡単に連携できる方法が見つからなかった。 

  2. フォントレンダリングには gdipp を使ってる 

コメントを残す