【Vim】色をカスタマイズする

Vimのカラースキームを導入し、いい感じの色になったが
「ここの色少し見にくい…」というところを微調整したくなる。

そんなときにどうやって設定すれば良いか解説する。

事前知識

① ハイライトグループ

Vimにはハイライトグループという考え方があり、
Vim内で見える文字列は全て何らかのハイライトグループに分類され
そのハイライトグループに適用されている色設定で表示される。

つまり

  • 変えたい箇所がどんなハイライトグループに属しているか
  • ハイライトグループに対してどのように色を変えるか

が分かれば簡単にカスタマイズすることができる。

② 色を指定するための項目

色を指定するためには

  • cterm or gui
  • 文字色(fg) or 背景色(bg)

の組み合わせを知っておく必要がある。

文字色を変えたい背景色を変えたい
ctermを変えたいctermfgctermbg
guiを変えたいguifgguibg

VimをCUI上で操作しているなら、ctermfgctermbgだけ変更しておけば良い。

カラースキームを自作したい場合はguifg,guibgの方も明示的に指定した方が良い。

変えたい箇所のハイライトグループを特定する

「ここの色を変えたいんだけど、どういうハイライトグループなのか分からない」というときは

Bytefluent | Vivify
A colorscheme editor for vim/gvim/macvim. Terminal-friendly color approximation. Vim color schemes.

を利用して調べると良い。

コード内の文字列をクリックすると、どんなハイライトグループに分類されているか分かる。

もしくは、ヘルプからも確認することができる。

" プログラミング言語でよく使われるカテゴリ(コメントアウト、if文、定数、文字列など)
:help group-name

" ステータスライン、補完のポップアップ、その他文字列など
:help highlight-groups

:help group-nameの場合、下記のようになっていて分かりやすい。

設定ファイルに書き込む前にどんな見た目になるか確認する

最終的には設定ファイルに書いて保存するが、
その前に色を確かめながら微調整したいはずだ。

その場合はVimのコマンドラインモードから直接変更して検証するのが良い。

256 Colors - Cheat Sheet - Xterm, HEX, RGB, HSL
List of 256 colors for Xterm prompt (console). Contains displayed color, Xterm Name, Xterm Number, HEX, RGB and HSL code...

試しに上記リンクを参考にしながら、.vimrcのコメントアウト色を変更してみる。

:highlight Comment ctermfg=57

ハイライトグループ「Comment」の文字色を57番に指定すると、次のように色が変わることが確認できる。

設定ファイルに書き込む

納得のいく色味になったら、.vimrcに記述する。

カラースキームを途中で変更しても適切に反映されるように
ColorSchemeのイベントが発生した時に設定するよう記述する。

autocmd ColorScheme * highlight Comment ctermfg=57

まとめ

  • ハイライトグループは下記で確認
    • https://bytefluent.com/vivify/index.php
  • 256色は下記で確認
    • https://jonasjacek.github.io/colors/
  • 一旦vim起動中に変更してみて微調整する
  • 色が決まったら.vimrcに書き込む
タイトルとURLをコピーしました