[vim]色見本スクリプトを活用して、lightlineのステータス行をクールに彩る

2013-09-14

この記事は、 Vim Advent Calendar 2012 の288日目の記事です。 ここまで来たら365日も夢じゃない。ディスプレイの前のみんなも参加して、一緒に歴史をつくりませんか!

昨日の記事は、 @manga_osyo さんの「unite.vim の候補を動的にソートする」。

ステータス行の機能を拡張する、line系プラグイン

powerlineairlineなどのline系プラグイン(←勝手に命名した)は、ステータス行の機能を拡張し、かつクールに彩ってくれます。

(画像はvim-airlineより拝借)

以前から興味はあったものの、とある理由で導入できずにいました。

配色が異なるので、浮いてしまう

置き換えられたステータス行は独自のカラースキームを持っており、Vim本体のものとは独立しています。自分はhybridというカラースキームを愛用しているのですが、デフォルトの配色では微妙に浮いてしまいます。

ステータス行のカラースキームを自作すればすべて解決ですが、現在の配色の値を調べて、色の設定方法を調べて、…という諸々の作業が面倒で、しばらく触ることはありませんでした。

新星「lightline」のコンセプトに惚れた

それからしばらくして、line系プラグインに「lightline」という新星が現れたことを知ります。 その紹介記事で語られている、作者さんの美学がすばらしい。

プラグインの直交性は重要です. それは私の美学でもあるのです.

これは試さねば。

でも、試す前にカラースキームの色見本をつくろう

本体のカラースキームと調和させるには、同じ色パレットから選ぶのが最も確実です。 1色ずつ調べていくのは面倒なので、色見本を自動生成するスクリプトをつくってみることにしました。

スクリプトをつくる際につまずいたのは、現在のハイライトグループの一覧を取得する部分。 :help functions で関数一覧を探すも、それらしきものは見当たりません。

そこで、ハイライトグループの定義とその一覧を表示してくれる「hitest.vim」を参考にします。 このスクリプトは標準でVim本体に付属しているもので、皆さまのVimでも実行できるはず。

:source $RUNTIME/syntax/hitest.vim

中身を覗いてみると、:highlightで表示されるハイライトグループ一覧を:redir @aでレジスタに入れることで、Vim Scriptの世界に渡しているようです。 なるほどー。

色見本生成スクリプト「colorswatch.vim」ができた

そんなこんなで、色見本生成スクリプトcolorswatch.vimができました。

インストール後に :ColorSwatchGenerate と打てば、色見本が生成されます。

これで簡単に色がピックアップできるようになったぜ。

lightline用のhybridカラースキームも完成

当初の目的、lightline用のカラースキーム作成に戻ります。

先ほどのcolorswatch.vimを使って、hybridのよさげな配色を拾っていけば…。 lightline用のhybridカラースキーム、lightline-hybridの完成です。

標準の配色はlightlineのデフォルト、つまりpowerlineライクに仕上げています。

より控えめがお好みならば、g:lightline_hybrid_style = “plain”を.vimrcに書いておいてください。本来のhybridに近い、控えめな外観になりますよ。

colorswatch.vimでお気に入りのカラースキームを移植して、lightlineを楽しもうぜ!

明日の担当は、@mittan さんです。 289日目: VimからMacの内蔵辞書を引きたい

書いている人:cocopon

Developer/Designer. Web/iOSなどのフロントエンドを主軸に、UIデザインから開発全般まで手がける。