エンジニアを目指す初学者に向けて、わかりやすく解説したブログです。
サイトをリニューアルしました

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

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

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

事前知識

① ハイライトグループ

Vimにはハイライトグループという考え方があり、

Vim内で見える文字列は全て何らかのハイライトグループに分類され

そのハイライトグループに適用されている色設定で表示される。

つまり

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

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

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

色を指定するためには

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

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

文字色を変えたい 背景色を変えたい
ctermを変えたい ctermfg ctermbg
guiを変えたい guifg guibg

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

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

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

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

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

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

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

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

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

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

Image in a image block

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

最終的には設定ファイルに書いて保存するが、

その前に色を確かめながら微調整したいはずだ。

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

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

Image in a image block
:highlight Comment ctermfg=57

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

Image in a image block

設定ファイルに書き込む

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

カラースキームを途中で変更しても適切に反映されるように

ColorSchemeのイベントが発生した時に設定するよう記述する。

autocmd ColorScheme * highlight Comment ctermfg=57

まとめ

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