Vimの配色テーマを変更する(:colorscheme)
デフォルトの配色のまま何年も使っていましたが、Vim標準だけでも複数のカラースキームが最初から同梱されています。プラグインを入れなくても、コマンド1つで見た目を変えられます。
検証環境:macOS + Vim 9.1.1752 / Neovim 0.12.4。同梱テーマの一覧と件数、catppuccinやvimへの切り替えは、実際に適用して確かめた結果です。
目次(9項目)
| コマンド | これだけ覚える |
|---|---|
:colorscheme {テーマ名} | 配色テーマを切り替える |
set background=dark / light | 背景の明暗を合わせて調整 |
set termguicolors | 外部テーマの色をより正確に表示 |
基本の使い方
:colorscheme {テーマ名}
:colorschemeとだけ打ってTabで補完すれば、インストール済みの一覧を確認できます。手元のVim 9.1では26個が最初から入っていました。
blue darkblue default delek desert elflord
evening habamax industry koehler lunaperche
morning murphy pablo peachpuff quiet retrobox
ron shine slate sorbet torte unokai
wildcharm zaibatsu zellner
見慣れない名前が混じっているかもしれません。Vim 9で同梱の配色が入れ替わったためです。リリースノートには経緯がこう書かれています。
Colorschemes from https://github.com/vim/colorschemes have been included. They were made to work consistently across many types of terminals.
habamaxやretrobox、sorbetあたりが新顔で、端末の種類によらず同じ見え方になることを狙って作られています。昔の配色のほうが好みなら、リリースノートが案内しているlegacy_colorsから入手できます。
今どのテーマを使っているか
引数なしで:colorschemeと打つと、現在のテーマ名が表示されます。手元でdesertを適用した状態で実行するとdesertと返りました。何も設定していない状態ではg:colors_name自体が未定義で、組み込みの既定配色が使われています。
:colorscheme desert
設定ファイルに固定する
colorscheme desert
気に入ったテーマが決まったら、vimrcやinit.luaに1行書いておけば起動時から適用されます。
背景色の明暗も合わせて設定する
set background=dark " または light
カラースキームによっては、backgroundの値(dark/light)に応じてコントラストを調整するものがあります。テーマを変えても妙に見づらいと感じたら、この設定も確認すると安心です。
外部テーマを使う場合の注意
プラグインとして配布されている人気の高いテーマ(gruvboxやnordなど)を導入する場合、テーマ自体はプラグインマネージャでインストールしつつ、有効化は同じcolorschemeコマンドで行います。ただしNeovimならcatppuccinは最初から同梱されています。プラグインを何も入れていないNeovim 0.12.4で:colorscheme catppuccinを実行したところ、そのまま適用できました。導入後にコマンドを打っても見た目が変わらない場合は、プラグインが正しく読み込まれているかを:scriptnamesで確認できます。
ハイライトを個別に上書きする
カラースキーム全体は気に入っているが、特定の要素(コメントの色など)だけ変えたい場合は、テーマを読み込んだ後にhighlightコマンドで個別に上書きできます。
colorscheme desert
highlight Comment ctermfg=green guifg=#00ff00
読み込み順序が重要で、カラースキームより先にhighlightを書くと、テーマの読み込み時に上書きされて元に戻ってしまいます。必ずテーマの指定より後に書きます。
ターミナルの色設定にも影響される
ターミナル版のVimでは、ターミナルアプリケーション自体の色設定(256色対応かtruecolor対応か)によって、同じカラースキームでも見え方が変わることがあります。termguicolorsを有効にすると、より正確な色でテーマを表示できる場合が多いです。
set termguicolors
termguicolorsの設定もあわせて確認すると安心です。
外部テーマを導入したのに色がくすんで見えて悩んでいたところ、termguicolorsを有効にしていなかったのが原因でした。設定を1つ足すだけで表示が劇的に改善し、事前にこの設定の存在を知っていればと思いました。
Neovimは既定の配色が別物
同じ:colorschemeでも、Neovimは0.10で既定の配色そのものが差し替わりました。ニュースには次のように書かれています。
Default color scheme has been updated to be "Nvim branded" and accessible.
「アップデートしたら色が変わった」と感じるのはこれが理由です。以前の見た目に戻したいなら、旧来の配色がvimという名前で残っているので次の1行で戻せます。手元の0.12.4でも切り替えられました。
colorscheme vim
まとめ
配色の変更は:colorschemeだけで完結する手軽な機能です。外部テーマを使う場合は、読み込み状況とtermguicolorsもあわせて確認すると見た目のトラブルを防げます。