スタートアップCTOによるITエンジニアのためのブログ

Neovim colorschemeの設定方法とおすすめ一覧

Neovimを使っていて、画面の配色が気にいらなかったり、目が疲れるといったことはないでしょうか。そんな時は、colorscheme(カラースキーム)を変更するのがおすすめです。

本記事では、Neovimでのcolorschemeの配色の仕組み、インストール&設定方法を解説します。また、おすすめのcolorschemeをいくつか紹介します。

colorschemeとは

Neovimのcolorschemeとは、いわゆる「テーマ」のことです。ソースコードのキーワードやデータタイプに応じて、様々な文字色や背景色を適用することを指します。

メリット

  • 可読性向上:言語キーワードや型ごとに異なる色を使うことで、コードの構造を瞬時に判別しやすくなります。
  • 環境適応性:普段はダークモードで目を保護し、屋外などの明るい場所ではライトモードに切り替えるなど、環境に合わせた最適な配色を選択できます。

構文解析とcolorschemeの配色の仕組み

Neovimには Highlight Groups(ハイライトグループ) という概念があり、これが「色の定義」と「解析結果」を結びつけるハブになっています。

  • カラースキームの役割:「このハイライトグループ(例: Function)は、文字色を青にする」という定義を保持します。
  • Tree-sitter / LSPの役割:コードを解析し、「ここからここは関数名だ」と判断して特定のハイライトグループ(例: @function)を割り当てます。

Tree-sitter (構文解析ベースのハイライト)

Tree-sitterはコードの構文木(AST)を作成し、高速かつ正確なハイライトを実現します。

  1. 解析: コードをスキャンして構造を理解します。
  2. マッピング: 独自のキャプチャ(例: @variable, @function.builtin)を作成します。
  3. ブリッジ:Neovimはこれらを標準的なハイライトグループ(Function, Identifier など)に自動でリンクさせます。

LSP セマンティックトークン (静的解析ベースのハイライト)

LSPはプロジェクト全体を理解した上で、より高度な色付けを行います。

  1. 解析:型定義や参照関係を解決します。
  2. 通知:「この単語は『クラス』である」といったメタデータをNeovimに送ります。
  3. 優先度:セマンティックトークンはTree-sitterの結果を上書き(オーバーライド)できます。これにより、Tree-sitterでは判別が難しい「変数がどの型のインスタンスか」といった深い情報に基づく色付けが可能になります。

:Inspect コマンドを実行すると、カーソル下の要素がどのハイライトグループに属しているかを確認できます。

インストール済みcolorscheme一覧

現在利用可能なcolorschemeは、以下のexコマンドで確認できます。

  • :colorscheme [space] CTRL-d
  • :colorscheme [space] TAB (TABキーで候補を回せます)

デフォルトで同梱されているものと、自身で追加したプラグインの両方が表示されます。

CTRL-d使用時:

Neovimにインストール済み colorschemeの一覧

TABキー使用時:

TABキーでNeovim colorscheme選択

colorscheme変更方法

exコマンドで、colorscheme名を指定して実行します。

:colorscheme [colorscheme名]

例: :colorschme tokyonight

※コマンドは :colo と省略することも可能です。

colorschemeのインストール方法

最も簡単なのは、lazy.nvim などのプラグインマネージャを使用する方法です。

  • プラグインファイルを作成(例:~/.config/nvim/lua/plugins/colorscheme.lua
  • GitHubのリポジトリ名と設定を記載します。
  • priority = 1000lazy = false を設定することで、起動時に真っ先に読み込まれ、背景色のチラつきを防げます。

lazy.nvimでの設定例:

# ~/.config/nvim/lua/plugins/tokyonight.lua
return {
  "folke/tokyonight.nvim",
  lazy = false,    -- 起動時に必ず読み込む
  priority = 1000, -- 他のプラグインより先に読み込む
  config = function()
    -- ここで読み込みを実行
    vim.cmd([[colorscheme tokyonight-night]])
  end,
}

lazy.nvimの設定方法は「【Neovim】 lazy.nvimのインストール・設定方法」で詳しく解説しています。

おすすめのカラースキーム一覧

人気の高いカラースキームを紹介します。これらはすべて Tree-sitter / LSP に対応しており、モダンな開発環境に最適です。

Tokyonight

東京の夜をイメージした、クリーンで洗練されたダークテーマです。

neovim tokyonight colorscheme

lazy.nvimでのインストール方法:

-- ~/.config/nvim/lua/plugins/tokyonight.lua
return {
  "folke/tokyonight.nvim",
  lazy = false,
  priority = 1000,
  opts = {},
}

Catppuccin

パステルカラーを基調とした、目に優しい非常に人気の高いテーマです。

Catppuccin Neovim colorscheme

lazy.nvimでのインストール方法:

-- ~/.config/nvim/lua/plugins/catppuccin.lua
return {
  "catppuccin/nvim",
  name = "catppuccin",
  lazy = false,
  priority = 1000,
}

Kanagawa

葛飾北斎の「神奈川沖浪裏」にインスパイアされた、和風で落ち着いた配色です。

kanagawa Neovim colorscheme

lazy.nvimでのインストール方法:

-- ~/.config/nvim/lua/plugins/kanagawa.lua
return {
  "rebelot/kanagawa.nvim",
  lazy = false,
  priority = 1000,
}

Rosé Pine

ニューヨークのソーホー地区の雰囲気をイメージした、スタイリッシュな配色です。

lazy.nvimでのインストール方法:

-- lua/plugins/rose-pine.lua
return {
  "rose-pine/neovim",
  name = "rose-pine",
  lazy = false,
  priority = 1000,
}

Gruvbox

レトロな雰囲気を持つ、定番のカラースキームです。

Gruvbox Neovim colorscheme

lazy.nvimでのインストール方法:

-- ~/.config/nvim/lua/plugins/gruvbox.lua
return {
  "ellisonleao/gruvbox.nvim",
  lazy = false,
  priority = 1000,
  config = true,
}

Nightfox

カスタマイズ性が高く、複数のバリエーション(Terafox, Carbonfoxなど)を内蔵しています。

nightfox Neovim colorscheme

lazy.nvimでのインストール方法:

-- ~/.config/nvim/lua/plugins/nightfox.lua
return {
  "EdenEast/nightfox.nvim",
  lazy = false,
  priority = 1000,
}

Dracula

多くのエディタやターミナルで展開されている、視認性の高いダークテーマの王道です。

Dracula Neovim colorscheme

lazy.nvimでのインストール方法:

-- ~/.config/nvim/lua/plugins/dracula.lua
return {
  "Mofiqul/dracula.nvim",
  lazy = false,
  priority = 1000,
}

まとめ

  • colorscheme を使うと、自分好みの配色にカスタマイズ可能。
  • Tree-sitterLSP と連携することで、コード構造をより詳細に色付けできる。
  • lazy.nvim を使えば、インストールと自動適用も簡単。

ぜひ色々なカラースキームを試して、あなたにとって最高の開発環境を構築してみてください!