【注意】本記事で解説している vim-powerline はすでに deprecated とされており、開発が停止され、メンテナンスも行われていません。可能ならば、以下の記事で解説しております、powerline への乗り換えをオススメします。
PYTHON 版 POWERLINE を使ってみる
https://blog.delphinus.dev/2013/04/use-python-powerlin.html
前置き
Vim の設定においてステータスラインのカスタマイズは最もハマるものの一つだが、Powerline を使うとカコイイステータスラインが簡単に使えていい感じ。プラグインを導入する(+ いくつかの設定)だけで次のようなステータスラインがすぐ使える。
このプラグインが特徴的なのは、そのために専用のグリフまで用意しているところ。スクリーンショットで情報の境目に使われている > < のような記号がそれである。
これは既存のフォントに 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/
.vimrc
に Bundle 'Lokaltog/vim-powerline'
と書き加えた後に、:BundleInstall!
を実行するだけ。簡単なもんだ。
この状態で起動すると次のような見た目。これでも十分きれい2なのだが、どうせなら一番最初にあげたスクリーンショットのようにフォントをカスタマイズしてみよう。
FontForge の導入 @ cygwin
cygwin の設定自体は他を見てもらうことにして、FontForge を cygwin で導入するには 2 通りの方法がある。
-
がんばってソースからコンパイル
-
Cygwin Ports からパッケージをインストールする。
(1.) は億劫なので (2.) を使って楽しよう。手順は次のリンクを参考にした。
Cygwin Portsで本家に未だ無い、新しいパッケージをインストールする – c4se記:さっちゃんですよ☆
http://d.hatena.ne.jp/Kureduki_Maari/20111112/1321030766
やり方は簡単なので割愛。インストール時には python-fontforge
パッケージにもチェック入れるの忘れないでね。
フォントにパッチを当てる
次に、目当てのフォントにパッチを当てる。ここからの作業は 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 を再起動すれば次のように変わっているはずだ。
ちなみに、実際には今までにあげたスクリーンショットは Ricty ではなく Envy Code R を使ってる。Ricty だとうちの環境では少し表示が欠けるんだよね。何でだろ? Ricty だとこんな感じ。「IP アドレス」の“P”が欠けてる。
いくつか試した感じ、パッチは当たるものの表示がおかしい場合があった。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
これでスクリプトは問題なく動くようになるはずだ。
今後は……
ちなみにターミナルで使うとこんな感じ。
スクリーンショットは Mac OS X + iTerm2 + screen + vim でのものだが、Windows + Putty でも問題なく表示された。
Powerline で表示される情報は必要十分であるのだが、個人的に重要なカーソル下の文字の文字コードが表示されていない。この辺がカスタマイズできるのか調べてみることにする。
→作ってみました。
【Vim】Powerline に文字コード表示機能をつける – blog.delphinus.dev
https://blog.delphinus.dev/2012/01/show-charcode-on-powerline.html
-
FontForge を Windows で使うというだけならば、unofficial fontforge-mingw に書かれている方法が簡単だ。でも、今回のパッチは Python スクリプトで書かれてるので、これと簡単に連携できる方法が見つからなかった。 ↩