Neovim 0.11.5 中如何排查 nvim-treesitter 健康检查报错?
结论
日志显示,Neovim 的 Tree-sitter runtime ABI 为 15,高于输出中要求的 >=13。报错出现在插件健康检查期间,仅凭这段日志无法判断 parser 是否安装或编译失败。可以先确认安装的 nvim-treesitter 分支,以及插件能否识别 tree-sitter --version 的输出。
配置使用了 require("nvim-treesitter.configs").setup(opts),这是旧版 nvim-treesitter 的配置方式。当前项目主分支的 README 使用了新的配置和安装 API,并要求 Neovim 0.12.0 或更高版本,因此与问题中的 Neovim 0.11.5 和旧配置不匹配。项目 README
先确认插件分支和 CLI 输出
在 Neovim 中运行 :Lazy,查看 nvim-treesitter 的安装分支和提交;也可以在插件目录运行:
git -C "$env:LOCALAPPDATA/nvim-data/lazy/nvim-treesitter" branch --show-current
git -C "$env:LOCALAPPDATA/nvim-data/lazy/nvim-treesitter" log -1 --oneline
tree-sitter --version
Lazy 的数据目录可能经过自定义。如果上述插件路径不存在,请以 :echo stdpath('data') 显示的位置为准。也可以直接在 PowerShell 中运行 tree-sitter --version,确认输出是插件能够识别的版本号。
当前主分支的健康检查会读取 tree-sitter --version 的输出,再调用 vim.version.ge 比较版本。如果输出无法解析,版本值可能为空,进而触发 vim/version.lua 中的异常。健康检查实现 因此,CLI 输出是值得检查的线索。还需结合实际安装的分支判断,不能只根据报错位置确定根因。
选择与 Neovim 版本匹配的配置
如果继续使用 Neovim 0.11.5 和现有的 configs.setup 配置,可以先在 Lazy.nvim 插件声明中固定旧版 master 分支,避免安装采用新 API 的主分支:
{
"nvim-treesitter/nvim-treesitter",
branch = "master",
build = ":TSUpdate",
opts = {
ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "python" },
auto_install = true,
highlight = { enable = true },
indent = { enable = true },
},
config = function(_, opts)
require("nvim-treesitter.configs").setup(opts)
end,
}
保存后运行 :Lazy sync,重启 Neovim,再运行 :checkhealth nvim-treesitter。如果 Lazy 提示该分支不存在,或仓库分支状态已经变化,请以仓库当前可用的分支为准。
也可以升级到 Neovim 0.12.0 或更高版本,再按照当前主分支 README 迁移配置。新 API 使用 require('nvim-treesitter').install { ... } 安装 parser,并通过 vim.treesitter.start() 等方式启用功能。旧版的 ensure_installed、auto_install 和 configs.setup 配置不能直接照搬。迁移说明
如果仍然报错
一起检查 tree-sitter --version 的完整输出、Lazy 显示的插件分支和提交,以及 :version 的输出。如果版本输出正常,插件分支也与 Neovim 版本匹配,再根据健康检查报告继续排查。目前提供的信息不足以确认是否还存在 Windows 下的 CLI 路径或版本解析问题。ABI 检查通过只说明 runtime ABI 满足该项要求,其他插件依赖检查仍需单独确认。
备注:内容仅供参考。
