症状
Neovimでnvim-treesitterを導入したが、シンタックスハイライトが表示されない、または一部の言語でハイライトが効かない。
結論:まずこれを確認
:TSInstall {言語名}でパーサーがインストールされているか確認:TSModuleInfoでhighlightモジュールが有効か確認:checkhealth nvim-treesitterでエラーがないか確認
操作フロー
flowchart TD
A[ハイライトが効かない] --> B{:TSInstallInfo で<br>パーサー確認}
B -->|未インストール| C[:TSInstall 言語名]
B -->|インストール済| D{:TSModuleInfo で<br>highlight確認}
D -->|false| E[init.luaで<br>highlight有効化]
D -->|true| F{:checkhealth<br>nvim-treesitter}
F -->|エラーあり| G[エラー内容に従い対処]
F -->|エラーなし| H[vim.cmd構文<br>競合を確認]
C --> I[再起動して確認]
E --> I
G --> I
H --> J[syntax offを確認]
よくある原因
- パーサー未インストール - 言語ごとのパーサーを個別にインストールする必要がある
- highlightモジュールが無効 - 設定でtreesitter highlightを有効化していない
- Neovimのバージョンが古い - nvim-treesitterは最新のNeovimを要求する
- 従来のsyntax highlightとの競合 -
syntax onが残っていると競合する場合がある - パーサーのビルドエラー - C コンパイラがないとパーサーがビルドできない
- プラグインマネージャの読み込み順 - treesitterの設定が読み込まれていない
- filetype未検出 - ファイルタイプが正しく認識されていない
操作手順
ステップ1: パーサーのインストール状態を確認する
Neovimを起動し、以下を実行する。
:TSInstallInfo
🔍 チェックポイント: 対象言語の横に [✓] が表示されていればインストール済み
未インストールの場合:
:TSInstall python
:TSInstall lua
:TSInstall javascript
ステップ2: highlightモジュールの有効状態を確認する
:TSModuleInfo
🔍 チェックポイント: highlight の行が対象ファイルタイプで true になっているか確認
ステップ3: init.luaの設定を確認する
設定ファイル ~/.config/nvim/init.lua を開き、以下の設定があるか確認する。
require('nvim-treesitter.configs').setup {
ensure_installed = { "lua", "python", "javascript" },
highlight = {
enable = true,
additional_vim_regex_highlighting = false,
},
}
🔍 チェックポイント: highlight = { enable = true } が設定されているか
ステップ4: checkhealthを実行する
:checkhealth nvim-treesitter
🔍 チェックポイント: ERROR や WARNING が表示されていないか確認
よくあるエラーと対処:
| エラー内容 | 対処 |
|---|---|
No C compiler found |
gcc または clang をインストール |
Neovim version too old |
Neovim 0.9.0 以上にアップデート |
Parser not found |
:TSInstall {言語} を実行 |
ステップ5: 従来のsyntax設定を確認する
~/.config/nvim/init.lua に以下が残っていないか確認する。
-- 以下は削除または無効化する
vim.cmd('syntax on')
vim.cmd('syntax enable')
treesitter使用時は不要:
-- treesitterが有効なら以下で十分
vim.cmd('syntax off')
🔍 チェックポイント: :set syntax? で syntax= (空)または syntax=off ならOK
ステップ6: filetypeの検出を確認する
:set filetype?
🔍 チェックポイント: 期待するファイルタイプ(python, lua など)が表示されるか
ファイルタイプが filetype= と空の場合:
-- init.lua に追加
vim.filetype.add({
extension = {
mdx = 'markdown',
},
})
NG行動(やってはいけないこと)
- :TSInstall all を実行する - 不要なパーサーまでインストールされ、起動が遅くなる
- パーサーを手動でコンパイルする - nvim-treesitterの管理外になり更新できなくなる
- syntax on と treesitter highlight を両方有効にする - 競合して表示が崩れる場合がある
- checkhealth のエラーを無視する - 根本的な問題を見逃す
よくある質問(FAQ)
Q1: 特定の言語だけハイライトが効かない場合は?
A: :TSInstall {言語名} でその言語のパーサーをインストールする。:TSInstallInfo で対応言語一覧を確認できる。
Q2: パーサーのインストールが失敗する場合は?
A: Cコンパイラ(gcc/clang)が必要。Ubuntuなら sudo apt install build-essential、macOSなら xcode-select --install を実行する。
Q3: treesitterとLSPのハイライトは競合する?
A: 通常は競合しない。LSPはセマンティックハイライト、treesitterはシンタックスハイライトで役割が異なる。両方有効で問題ない。
関連するトラブル
準備中
解決しない場合
- 公式ドキュメント: https://github.com/nvim-treesitter/nvim-treesitter
:messagesでエラーログを確認~/.local/share/nvim/lazy/nvim-treesitter/(lazy.nvimの場合)のパーサーディレクトリを削除して再インストール- 次に調べるキーワード:
nvim-treesitter parser install failed,treesitter highlight not working filetype