症状

Neovim起動時に Error detected while processingE5113 などのLua構文エラーが表示される

結論:まずこれを確認

  1. エラーメッセージの行番号を確認する
  2. luacheck または lua コマンドで構文チェックを実行する
  3. 該当行の括弧・カンマ・クォートの対応を確認する

操作フロー

    flowchart TD
    A[Neovim起動時にエラー] --> B{エラーメッセージに行番号あり?}
    B -->|Yes| C[該当行を確認]
    B -->|No| D[luacheckで全体チェック]
    C --> E{括弧/カンマ/クォート}
    E -->|不一致| F[対応を修正]
    E -->|問題なし| G[前後の行も確認]
    D --> H[エラー箇所を特定]
    F --> I[Neovim再起動で確認]
    G --> I
    H --> C
  

よくある原因

  • 括弧の閉じ忘れ - { ( [ に対応する閉じ括弧がない
  • カンマの過不足 - テーブル定義の最後に余分なカンマ、または途中でカンマ漏れ
  • クォートの不一致 - '" の混在、または閉じ忘れ
  • 予約語の誤使用 - end local function などの位置が不正
  • インデントの問題 - コピペ時にタブとスペースが混在
  • マルチバイト文字 - 全角スペースや全角括弧の混入
  • プラグイン設定の書式ミス - 各プラグインが期待する形式と異なる

操作手順

ステップ1: エラーメッセージを確認する

Neovim起動時に表示されるエラーを確認する。

    Error detected while processing /home/user/.config/nvim/init.lua:
E5113: Error while calling lua chunk: /home/user/.config/nvim/init.lua:42: '}' expected near 'vim'
  

🔍 チェックポイント: init.lua:42 のように行番号が表示されていれば、その行を中心に確認

ステップ2: 構文チェックツールで検証する

ターミナルで構文チェックを実行する。

    # luaがインストールされている場合
lua -e "loadfile('~/.config/nvim/init.lua')()"

# luacheckがインストールされている場合(より詳細)
luacheck ~/.config/nvim/init.lua
  

🔍 チェックポイント: エラーがなければ何も出力されない

ステップ3: 該当行と前後を確認する

エラー行を開いて確認する。

    # 行番号付きで表示(42行目周辺を確認する例)
sed -n '38,46p' ~/.config/nvim/init.lua | cat -n
  

または別のエディタで開く。

    # VSCodeで開く
code ~/.config/nvim/init.lua

# 別のNeovimセッション(最小設定で起動)
nvim -u NONE ~/.config/nvim/init.lua
  

🔍 チェックポイント: 括弧のハイライトやインデントの乱れを確認

ステップ4: よくあるパターンを修正する

括弧の対応ミス:

    -- NG: 閉じ括弧がない
vim.opt.completeopt = { "menu", "menuone", "noselect"

-- OK
vim.opt.completeopt = { "menu", "menuone", "noselect" }
  

カンマの問題:

    -- NG: 最後の要素の後にカンマがない(次の行がある場合)
local opts = {
    noremap = true
    silent = true  -- ここでエラー
}

-- OK
local opts = {
    noremap = true,
    silent = true,
}
  

クォートの不一致:

    -- NG: 開始と終了が異なる
vim.cmd('colorscheme gruvbox")

-- OK
vim.cmd('colorscheme gruvbox')
  

🔍 チェックポイント: 修正後、:source % または Neovim再起動でエラーが消えるか確認

ステップ5: Neovimの健全性チェックを実行する

Neovimが起動できる場合、内部診断を実行する。

    :checkhealth
  

🔍 チェックポイント: ERRORWARNING の項目を確認

ステップ6: 設定を分割して問題箇所を特定する

エラー箇所が特定できない場合、設定を一時的にコメントアウトする。

    -- 問題の切り分け:ブロック単位でコメントアウト
--[[
vim.opt.number = true
vim.opt.relativenumber = true
-- ... 省略
]]--
  

🔍 チェックポイント: コメントアウトでエラーが消えた範囲に原因がある

NG行動

  • エラーを無視して使い続ける - 他の設定も読み込まれない可能性がある
  • init.lua全体を削除する - 必要な設定まで消える、バックアップを取ってから作業する
  • ネットからコピペしてそのまま使う - Neovimのバージョンやプラグインの違いでエラーになる
  • 全角スペースでインデントする - 構文エラーの原因になる

よくある質問(FAQ)

Q1: エラーが出るがNeovimは起動する場合は?

A: init.lua の途中でエラーが発生し、それ以降の設定が読み込まれていない状態。エラー行より後の設定(キーマップ、プラグインなど)は機能していない可能性がある。

Q2: プラグインマネージャー(lazy.nvim等)導入後にエラーが出る場合は?

A: プラグインの設定記法がマネージャーごとに異なる。公式ドキュメントの書式を確認する。lua/plugins/ 配下のファイルも構文チェック対象。

Q3: 複数ファイルに分割している場合、どこがエラー?

A: エラーメッセージのパスを確認する。require で読み込んでいるファイル(lua/ ディレクトリ配下)がエラー元の場合もある。

関連するトラブル

準備中

解決しない場合