求助:Neovim中gitsigns插件触发E5560错误的原因与解决方法
Gitsigns.nvim在LazyVim中启动报错的问题解决
问题描述
我是Neovim新手,完成Neovim与LazyVim安装后,每次打开项目文件时,gitsigns插件都会报错,报错信息如下:
Error executing luv callback: ...m-data/lazy/gitsigns.nvim/lua/gitsigns/system/compat.lua:199: E5560: Vimscript function must not be called in a lua loop callback stack traceback: [thread: 0x0239f6765100] [C]: in function 'asystem' [thread: 0x0239f6765100] ...al/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/git/cmd.lua:58: in function 'command' [thread: 0x0239f6765100] ...l/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/git/repo.lua:111: in function 'new' [thread: 0x0239f6765100] ...l/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/git/repo.lua:132: in function 'get' [thread: 0x0239f6765100] .../Local/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/git.lua:243: in function 'new' [thread: 0x0239f6765100] ...cal/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/attach.lua:216: in function 'fn' [thread: 0x0239f6765100] ...l/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/debounce.lua:78: in function 'attach_throttled' [thread: 0x0239f6765100] ...cal/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/attach.lua:362: in function <...cal/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/attach.lua:361> stack traceback: [C]: in function 'error' ...ocal/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/async.lua:229: in function '_finish' ...ocal/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/async.lua:322: in function '_resume' ...ocal/nvim-data/lazy/gitsigns.nvim/lua/gitsigns/async.lua:317: in function 'on_exit' ...m-data/lazy/gitsigns.nvim/lua/gitsigns/system/compat.lua:272: in function <...m-data/lazy/gitsigns.nvim/lua/gitsigns/system/compat.lua:242>
错误原因分析
核心错误E5560: Vimscript function must not be called in a lua loop callback表明:Gitsigns插件在Lua异步回调的循环上下文里调用了Vimscript函数,违反了Neovim的运行规则。常见触发原因包括:
- Gitsigns版本与当前Neovim版本存在兼容性冲突
- LazyVim的配置中存在干扰异步逻辑的设置
- 本地Git环境的调用方式触发了插件的兼容性bug
解决方案
- 升级Gitsigns插件
在Neovim中执行命令:Lazy update gitsigns.nvim,拉取插件最新版本,新版本通常会修复这类异步调用的兼容性问题。 - 锁定兼容版本
若升级后问题仍存在,在LazyVim的插件配置中指定一个确认兼容当前Neovim的版本:return { "lewis6991/gitsigns.nvim", version = "v0.6", -- 可根据自身Neovim版本调整 } - 升级Neovim
确保Neovim版本为v0.9及以上(Gitsigns推荐的最低稳定版),旧版本的Lua异步API存在限制。执行nvim --version查看当前版本,版本过低则升级Neovim。 - 禁用异步特性
临时关闭Gitsigns的异步功能,强制使用同步调用:return { "lewis6991/gitsigns.nvim", opts = { _threaded_diff = false, _use_timers = false, }, }
内容的提问来源于stack exchange,提问作者Lisery
相关产品推荐
相关产品推荐

