You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 02:50:19