先日紹介した Solarized や Hemisu といったカラースキームは、&background
の値によって 2 種類のカラースキームを切り替えることが出来ます。
Solarized |
---|
|
Hemisu |
|
昼間明るいところでは set background=light
にして明るいカラースキームを使い、暗くなってきたら set background=dark
で使うと目に優しくて良さそうです。
でもこれを手作業でいちいちやるのはめんどいですよね? そうでもない? これを自動的にやってくれるのがこのプラグイン。
amdt/sunset
https://github.com/amdt/sunset
設定ファイルで緯度・経度を指定しておくと、その場所に応じた日の出・日の入りの時間とともに &background
を切り替えてくれるのです。
たとえば、東京の時刻に合わせるならばこんな感じです。
" for Tokyo let g:sunset_latitude = 35.67 let g:sunset_longitude = 139.8 let g:sunset_utc_offset = 9
あとは vim の起動時、あるいは、一定時間放置され、またキーが押されたとき(要するに CursorHold
イベント時)に時刻がチェックされ、&background
を切り替えてくれます。
注意点
ドキュメントにも書いてあることですが、いわゆる dotfiles
をネットで公開している場合は、上記の緯度と経度の値に注意しないといけません。これを余りに正確な位置に設定すると、住所を晒すのも同じになってしまいますからね。
たとえば県庁所在地の場所にするとか、ある程度対策を考えた方が良いと思われます。
Powerline も一緒に切り替える
ここまででもかなりマニアックなプラグインですが、まだ満足できません。Solarized のテーマを自動的に切り替えてくれるのは良いのですが、Powerline のカラースキームが切り替わらないのでは片手落ちです。
そこでプラグインに手を入れて、切り替わり時に任意の処理を追加できるようにしました。(Pull request 済)
→ 最新バージョン v1.1.0 にてパッチが取り込まれました。
このパッチを当てて、以下のようなコードを .vimrc
に書いておくと、Powerline のカラースキームも自動的に切り替わってくれて満足です。
function! g:sunset_daytime_callback() set background=light if exists(':PowerlineReloadColorscheme') let g:Powerline_colorscheme = 'solarized' PowerlineReloadColorscheme endif endfunction function! g:sunset_nighttime_callback() set background=dark if exists(':PowerlineReloadColorscheme') let g:Powerline_colorscheme = 'solarized16' PowerlineReloadColorscheme endif endfunction