症状

Neovimでカラースキームを設定したが、色が反映されない・デフォルトのままになる。

結論:まずこれを確認

  1. カラースキームがインストールされているか確認: :colorscheme <Tab>で補完候補に出るか
  2. vim.cmd("colorscheme テーマ名") の記述位置がプラグイン読み込み後になっているか
  3. termguicolors が有効になっているか: :set termguicolors?

操作フロー

    flowchart TD
    A[カラースキームが反映されない] --> B{:colorscheme Tab で候補に出る?}
    B -->|No| C[プラグインがインストールされていない]
    B -->|Yes| D{エラーメッセージが出る?}
    D -->|Yes| E[エラー内容を確認]
    D -->|No| F{termguicolorsは有効?}
    F -->|No| G[termguicolorsを設定]
    F -->|Yes| H{設定の読み込み順序は正しい?}
    H -->|No| I[colorscheme行の位置を修正]
    H -->|Yes| J[ターミナルの色設定を確認]
    C --> K[プラグインマネージャーで再インストール]
    E --> L[該当セクションへ]
  

よくある原因

  • プラグインがインストールされていない - プラグインマネージャーの設定ミスや同期忘れ
  • colorscheme の記述位置が早すぎる - プラグイン読み込み前に実行している
  • termguicolors が無効 - True Color対応テーマは24bitカラーが必要
  • テーマ名のスペルミス - 大文字小文字やハイフン/アンダースコアの違い
  • ターミナルがTrue Colorに非対応 - 古いターミナルや設定不足
  • 背景色(background)の設定不一致 - light/darkの指定がテーマと合っていない
  • init.luaの構文エラー - 途中でエラーが発生し後続が実行されない

操作手順

ステップ1: カラースキームの存在を確認する

Neovimを起動し、以下を実行する。

    :colorscheme <Tab>
  

🔍 チェックポイント: 設定したいテーマ名が補完候補に表示されれば、プラグインはインストール済み

表示されない場合は、プラグインマネージャーで再インストールする。

lazy.nvimの場合:

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

packer.nvimの場合:

    use 'folke/tokyonight.nvim'
  
    :PackerSync
  

ステップ2: termguicolors の状態を確認する

    :set termguicolors?
  

🔍 チェックポイント: termguicolors と表示されれば有効。notermguicolors なら無効

無効の場合、~/.config/nvim/init.lua に以下を追加する。

    vim.opt.termguicolors = true
  

ステップ3: 設定ファイルの読み込み順序を確認する

~/.config/nvim/init.lua を開き、colorscheme の設定位置を確認する。

正しい例(lazy.nvim使用時):

    -- プラグインマネージャーの設定
require("config.lazy")

-- カラースキームはプラグイン読み込み後
vim.cmd("colorscheme tokyonight")
  

正しい例(lazy.nvimのconfig内で設定):

    return {
  "folke/tokyonight.nvim",
  lazy = false,
  priority = 1000,
  config = function()
    vim.cmd("colorscheme tokyonight")
  end,
}
  

🔍 チェックポイント: priority = 1000 を設定すると他のプラグインより先に読み込まれる

ステップ4: 背景色の設定を確認する

    :set background?
  

テーマによっては light / dark の指定が必要。

    vim.opt.background = "dark"
vim.cmd("colorscheme tokyonight")
  

ステップ5: 構文エラーがないか確認する

    :checkhealth
  

🔍 チェックポイント: ERROR や WARNING が表示されたら該当箇所を修正

設定ファイルを直接読み込んでエラーを確認する。

    :luafile ~/.config/nvim/init.lua
  

ステップ6: ターミナルのTrue Color対応を確認する

ターミナルで以下を実行する。

    echo $TERM
  

🔍 チェックポイント: xterm-256colorscreen-256color 以上が必要

.bashrc.zshrc に以下を追加する。

    export TERM=xterm-256color
  

NG行動

  • エラーを確認せず設定を追加し続ける - 根本原因が分からなくなる
  • 複数のカラースキーム設定を残す - 後から読み込まれた方で上書きされ混乱する
  • ターミナルの設定を変えずにNeovim側だけ修正する - True Color非対応では解決しない
  • プラグインマネージャーの同期を忘れる - 設定を書いてもインストールされない

よくある質問(FAQ)

Q1: Vimでは動くのにNeovimで動かないのはなぜ?

A: 設定ファイルのパスが異なる。Neovimは ~/.config/nvim/init.lua(または init.vim)を読み込む。Vimの ~/.vimrc は自動で読み込まれない。

Q2: 一部の色だけおかしいのはなぜ?

A: シンタックスハイライトの設定が競合している可能性がある。:syntax on が有効か確認し、他のプラグインがハイライトを上書きしていないか確認する。

Q3: SSHで接続すると色がおかしくなる

A: SSH先のターミナル設定が異なる。接続先の $TERM 変数を確認し、必要に応じて export TERM=xterm-256color を設定する。

関連するトラブル

準備中

解決しない場合

  • Neovim公式ドキュメント: :help colorscheme
  • 確認すべきログ: :messages でエラーメッセージを確認
  • 次に調べるキーワード: 「Neovim highlight group」「Neovim treesitter colorscheme」