添加lazy.nvim后Neovim提示“No parser for Lua”问题求助
问题:启用lazy.nvim后触发Treesitter解析器缺失错误
问题描述
Ubuntu系统下重装Neovim,按教程配置后Lua语法高亮正常。但添加lazy.lua文件并在init.lua中引入后,执行require("lazy").setup("my.plugins")时,打开Lua或Vimscript文件会触发Treesitter错误:no parser for 'lua' language,注释该行则恢复正常。
背景信息
- 未手动安装过treesitter,执行
TSupdate提示未知命令,但/usr/share/nvim/runtime/lua/vim/下存在treesitter目录。 ~/.config/nvim目录结构:
├── init.lua ├── lazy-lock.json └── lua └── my ├── core │ ├── init.lua │ ├── keymaps.lua │ └── options.lua ├── lazy.lua └── plugins └── init.lua
init.lua内容:
require("my.core") require("my.lazy")
lazy.lua核心代码为require("lazy").setup("my.plugins"),core目录仅包含按键映射和基础选项配置,plugins/init.lua为空或包含插件列表时均会触发错误。:checkhealth关键结果:
============================================================================== vim.treesitter: require("vim.treesitter.health").check() - Nvim runtime ABI version: 14
原因分析
Neovim自带Treesitter核心模块,但默认不包含具体语言的解析器。之前语法高亮正常是依赖Vim内置的语法规则,启用lazy.nvim后,即使plugins/init.lua为空,lazy.nvim的初始化逻辑可能触发了Treesitter的语法高亮检测,导致因缺少对应解析器而报错。
解决方法
方法1:安装nvim-treesitter插件并配置解析器
在my/plugins/init.lua中添加以下配置,自动安装所需解析器并启用高亮:
return { { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate", config = function() require("nvim-treesitter.configs").setup({ ensure_installed = {"lua", "vim"}, -- 按需添加其他语言 highlight = {enable = true}, }) end, } }
保存后重启Neovim,lazy.nvim会自动下载安装插件及解析器,完成后错误即可消除。
方法2:回退到Vim内置语法高亮(不安装treesitter插件)
如果不想使用Treesitter,可在my/core/options.lua中添加配置,禁用Treesitter并启用原生语法高亮:
-- 全局禁用Treesitter vim.g.treesitter_enabled = false -- 启用Vim原生语法高亮 vim.opt.syntax = "on" -- 或针对特定文件类型单独配置 vim.api.nvim_create_autocmd("FileType", { pattern = {"lua", "vim"}, callback = function() vim.opt.syntax = "on" vim.treesitter.stop() end, })
重启Neovim后,打开Lua/Vimscript文件将使用原生语法高亮,不会再触发解析器错误。
内容的提问来源于stack exchange,提问作者user56834
相关产品推荐
相关产品推荐

