症状
Neovimでカラースキームを設定したが、色が反映されない・デフォルトのままになる。
結論:まずこれを確認
- カラースキームがインストールされているか確認:
:colorscheme <Tab>で補完候補に出るか vim.cmd("colorscheme テーマ名")の記述位置がプラグイン読み込み後になっているか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-256color や screen-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」