lightline.vimでcolorschemeをあてたときに気に食わない色を修正する

TL;DR

タイトルのとおりです.
自分はvimのステータスラインをいい感じにしてくれるlightline.vimというプラグインを使っています.
いままでカラースキームにはsolarizedを使っていたのですが,ちょっと地味なので他にないかなと探していたところ,deusというカラースキームがかっこよかったのでそれを使い始めました.
しかし,今までNormalが青,Insertが緑でしたがdeusはNormalとInsertで逆の色だったのでなんか気持ち悪いなと感じてしまいました.

そこで,自分で色を設定して変えてやればいいじゃんと思い設定しました.
ちなみにvimscriptとかよくわからない人なので,こんなの当たり前じゃんと思われるかもしれませんがご容赦ください...

deusの色設定を見てみる

call dein#add('itchyny/lightline.vim)でlightline.vimをインストールするとxxx/itchyny/lightline.vim/autoload/lightline/colorschemeにdeusやsolarizedなどの色設定が書かれたvimscriptがあります.
まずはそのディレクトリまで行って目的のカラースキームを見てみます.(GitHubにも同じものを見ることが出来るのでそちらでも可)

...
let s:p.normal.left = ...
let s:p.normal.right = ...
let s:p.insert.left = ...
let s:p.insert.right = ...
...

なんかいろいろ書いてあります.例えばlet s:p.insert.leftであればInsertモードでの左側のステータスラインの色が指定してあります.
このことを念頭に置いて任意の色に変えていきます.

実際に任意の色を指定してみる

deusをあてたときのデフォルトの状態は下のような状態です. f:id:mryyomutga:20181111021744j:plain

自分にとってはかなり違和感がありますので逆にしてしまいましょう.

tomlで管理している場合はhook_add,もしくはinit.vimなどに設定を書き加えていきます.

" deusのパレットを選択 "
let s:palette = g:lightline#colorscheme#deus#palette                                                                                                                                                                                  
" 色の定義 "
let s:blue = 14                                                                                                                                                                                                                       
let s:green = 114                                                                                                                                                                                                                     
let s:black = 235                                                                                                                                                                                                                     
let s:white = 145                                                                                                                                                                                                                     
let s:gray = 236                                                                                                                                                                                                                      

" deusではNormalとInsertのleftは以下のような設定,この値をそのまま入れ替えてやればいい "
"" let s:p.normal.left = [ [ '#292c33', '#98c379', s:term_black, s:term_green, 'bold' ], [ '#98c379', '#292c33', s:term_green, s:term_black ] ]
"" let s:p.insert.left = [ [ '#292c33', '#61afef', s:term_black, s:term_blue, 'bold' ], [ '#61afef', '#292c33', s:term_blue, s:term_black ] ]
" NormalとInsertの時の色を設定する "
let s:palette.normal.left  = [ [ '#292c33', '#8eb2f7', s:black, s:blue, 'bold' ], [ '#8eb2f7', '292c33', s:blue, s:black ] ]                                                                                                          
let s:palette.normal.right = [ [ '#292c33', '#8eb2f7', s:black, s:blue, 'bold' ], [ '#abb2bf', '#3e4452', s:white, s:black ], [ '#8eb2f7', '292c33', s:blue, s:black ] ]                                                              
let s:palette.insert.left  = [ [ '#292c33', '#98c379', s:black, s:green, 'bold' ], [ '#98c379', '#292c33', s:green, s:black ] ]                                                                                                        
let s:palette.insert.right = [ [ '#292c33', '#98c379', s:black, s:green ], [ '#abb2bf', '#3e4452', s:white, s:gray ], [ '#98c379', '#292c33', s:green, s:black ] ]  

色の設定は左から

  • GUIのフォントの色
  • GUIの背景色
  • CUIのフォントの色
  • CUIの背景色
  • bold,reverseなどの設定

といった順で並んでいます.単に逆にしたいだけならNormalとInsertの中身をそっくりそのまま入れ替えてあげるといいです.
自分で任意の色にしたい場合は,その都度適切に値を入れていけば反映されます.

設定し終わって再度vimを起動すると以下のようになります. f:id:mryyomutga:20181111021657j:plain

無事ステータスラインの色を変えることが出来ました.

colorschemeの変数の意味が分かればタブラインなどの設定も出来たり,自作のカラースキームを使うことも出来るようです.