この記事は、 Vim Advent Calendar 2012 の288日目の記事です。 ここまで来たら365日も夢じゃない。ディスプレイの前のみんなも参加して、一緒に歴史をつくりませんか!
昨日の記事は、 @manga_osyo さんの「unite.vim の候補を動的にソートする」。
powerlineやairlineなどのline系プラグイン(←勝手に命名した)は、ステータス行の機能を拡張し、かつクールに彩ってくれます。
(画像はvim-airlineより拝借)
以前から興味はあったものの、とある理由で導入できずにいました。
置き換えられたステータス行は独自のカラースキームを持っており、Vim本体のものとは独立しています。自分はhybridというカラースキームを愛用しているのですが、デフォルトの配色では微妙に浮いてしまいます。
ステータス行のカラースキームを自作すればすべて解決ですが、現在の配色の値を調べて、色の設定方法を調べて、…という諸々の作業が面倒で、しばらく触ることはありませんでした。
それからしばらくして、line系プラグインに「lightline」という新星が現れたことを知ります。 その紹介記事で語られている、作者さんの美学がすばらしい。
プラグインの直交性は重要です. それは私の美学でもあるのです.
これは試さねば。
本体のカラースキームと調和させるには、同じ色パレットから選ぶのが最も確実です。 1色ずつ調べていくのは面倒なので、色見本を自動生成するスクリプトをつくってみることにしました。
スクリプトをつくる際につまずいたのは、現在のハイライトグループの一覧を取得する部分。
:help functions
で関数一覧を探すも、それらしきものは見当たりません。
そこで、ハイライトグループの定義とその一覧を表示してくれる「hitest.vim」を参考にします。 このスクリプトは標準でVim本体に付属しているもので、皆さまのVimでも実行できるはず。
:source $RUNTIME/syntax/hitest.vim
中身を覗いてみると、:highlightで表示されるハイライトグループ一覧を:redir @aでレジスタに入れることで、Vim scriptの世界に渡しているようです。 なるほどー。
そんなこんなで、色見本生成スクリプトcolorswatch.vimができました。
インストール後に :ColorSwatchGenerate
と打てば、色見本が生成されます。
これで簡単に色がピックアップできるようになったぜ。
当初の目的、lightline用のカラースキーム作成に戻ります。
先ほどのcolorswatch.vimを使って、hybridのよさげな配色を拾っていけば…。 lightline用のhybridカラースキーム、lightline-hybridの完成です。
標準の配色はlightlineのデフォルト、つまりpowerlineライクに仕上げています。
より控えめがお好みならば、g:lightline_hybrid_style = “plain"を.vimrcに書いておいてください。本来のhybridに近い、控えめな外観になりますよ。
colorswatch.vimでお気に入りのカラースキームを移植して、lightlineを楽しもうぜ!
明日の担当は、@mittan さんです。 289日目: VimからMacの内蔵辞書を引きたい