ここぽんのーと

コードとデザインの境界に生きるエンジニアの、雑多な記録帳。

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

2013/09/14, cocopon

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

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

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

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

2a75385e-04ef-11e3-935c-e3b9f0e954cc(画像はvim-airlineより拝借)

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

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

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

2013-09-11 21.44.46

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

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

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

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

これは試さねば。

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

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

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

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

:source $RUNTIME/syntax/hitest.vim

2013-09-11 19.06.57

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

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

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

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

687474703a2f2f636f636f706f6e2e6d652f6170702f636f6c6f727377617463682e76696d2f696d672f73637265656e73686f742e706e67

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

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

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

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

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

687474703a2f2f636f636f706f6e2e6d652f6170702f6c696768746c696e652d6879627269642f696d672f64656661756c742e706e67

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

687474703a2f2f636f636f706f6e2e6d652f6170702f6c696768746c696e652d6879627269642f696d672f706c61696e2e706e67

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

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