如何修复Neovim中Treesitter加载Lua解析器的未知错误?
修复Windows下Neovim Treesitter Lua解析器加载失败问题
问题情况
在Windows系统使用Neovim搭配nvim-treesitter插件编辑Lua文件时,触发加载语言'lua'的解析器失败错误,提示C:\Users\CoolPlayLin\AppData\Local\nvim-data\site\pack\packer\start\nvim-treesitter\parser\lua.so不是有效的Win32应用程序,仅编辑Lua文件时出现该错误。
错误栈信息
处理"*"的BufNewFile自动命令时检测到错误: 执行Lua回调出错: C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:21: 执行Lua出错: C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:22: "*"的BufNewFile自动命令.. "*"的FileType自动命令: Vim(append):执行Lua回调出错: 加载语言'lua'的解析器失败: uv_dlopen: C:\Users\CoolPlayLin\AppData\Local\nvim-data\site\pack\packer\start\nvim-treesitter\parser\lua.so 不是有效的Win32应用程序。 调用栈回溯: [C]: 函数 '_ts_add_language' ...eovim\share\nvim\runtime/lua/vim/treesitter/language.lua:99: 函数 'add' ...m\share\nvim\runtime/lua/vim/treesitter/languagetree.lua:98: 函数 'new' ...m Files\Neovim\share\nvim\runtime/lua/vim/treesitter.lua:61: 函数 '_create_parser' ...m Files\Neovim\share\nvim\runtime/lua/vim/treesitter.lua:131: 函数 'get_parser' ...m Files\Neovim\share\nvim\runtime/lua/vim/treesitter.lua:459: 函数 'start' ...\start\nvim-treesitter/lua/nvim-treesitter/highlight.lua:20: 函数 'attach' ...er\start\nvim-treesitter/lua/nvim-treesitter/configs.lua:509: 函数 'attach_module' ...er\start\nvim-treesitter/lua/nvim-treesitter/configs.lua:532: 函数 'reattach_module' ...er\start\nvim-treesitter/lua/nvim-treesitter/configs.lua:133: 函数 <...er\start\nvim-treesitter/lua/nvim-treesitter/configs.lua:132> [C]: 函数 'nvim_cmd' C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:22: 函数 <C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:21> [C]: 函数 'nvim_buf_call' C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:21: 函数 <C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:10> 调用栈回溯: [C]: 函数 'nvim_cmd' C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:22: 函数 <C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:21> [C]: 函数 'nvim_buf_call' C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:21: 函数 <C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:10> 调用栈回溯: [C]: 函数 'nvim_buf_call' C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:21: 函数 <C:\Program Files\Neovim\share\nvim\runtime\filetype.lua:10>
修复及规避方案
方案一:重新安装适配Windows的Lua解析器
步骤1:删除无效文件
找到路径C:\Users\CoolPlayLin\AppData\Local\nvim-data\site\pack\packer\start\nvim-treesitter\parser\,删除其中的lua.so文件。Windows平台下Neovim的Treesitter解析器应为.dll格式,.so是类Unix系统的动态库,属于错误文件类型。步骤2:重新安装解析器
打开Neovim,执行以下命令::TSInstall lua等待安装完成,系统会自动下载Windows对应的
lua.dll解析器。步骤3:验证结果
编辑任意Lua文件,检查错误是否消失。也可执行命令查看解析器状态::TSInfo lua显示
Parser: lua [installed]即为安装成功。
方案二:临时禁用Lua的Treesitter功能
若暂时无法重新安装,可临时禁用Lua文件的Treesitter高亮,在Neovim配置中添加:
require'nvim-treesitter.configs'.setup { highlight = { enable = true, disable = { 'lua' }, -- 关闭Lua的Treesitter高亮 }, }
重启Neovim后编辑Lua文件不再触发错误,但会丢失Treesitter的语法高亮等功能,建议优先采用方案一。
内容的提问来源于stack exchange,提问作者CoolPlayLin
相关产品推荐
相关产品推荐

