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

NvChad配置LSP后第三方包无自动补全问题求助

NvChad中Go/JS LSP第三方包补全无提示的解决方法

问题背景

从VSCode切换到Neovim并配置NvChad后,已完成Golang(gopls)和JavaScript(tsserver)的LSP配置,但补全功能异常:仅语言关键字(如function、var)和当前缓冲区内容能触发补全,导入Go的strings包或JS的fs包后,输入strings.或fs.时无任何补全提示。

核心问题

你的lspconfig.lua中存在语法错误:将LSP的setup函数当作属性赋值,导致自定义配置并未被LSP加载。此外tsserver的配置中开启了disableSuggestions,会直接关闭补全建议。

修正后的配置代码

自定义lspconfig.lua

local config = require("plugins.configs.lspconfig")
local on_attach = config.on_attach
local capabilities = config.capabilities -- 继承NvChad默认capabilities

-- 用cmp_nvim_lsp扩展默认capabilities,保留原有配置的同时增强补全支持
local cmp_capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities)

local lspconfig = require("lspconfig")
local util = require "lspconfig/util"

-- 正确调用setup函数(而非赋值),加载gopls配置
lspconfig.gopls.setup({
  on_attach = on_attach,
  capabilities = cmp_capabilities,
  cmd = {"gopls"},
  filetypes = { "go", "gomod", "gowork", "gotmpl" },
  root_dir = util.root_pattern("go.work", "go.mod", ".git"),
  settings = {
    gopls = {
      staticcheck = true,
      gofumpt = true,
      usePlaceholders = true,
      analyses = {
        unusedparam = true,
        fieldalignment = true,
      }
    }
  }
})

-- 修正tsserver配置,移除disableSuggestions以开启补全
lspconfig.tsserver.setup({
  on_attach = on_attach,
  capabilities = cmp_capabilities,
  init_options = {
    preferences = {
      -- 注释或删除disableSuggestions,避免关闭补全建议
      -- disableSuggestions = true,
    }
  }
})

验证与调试步骤

  1. 重启Neovim,打开Go/JS项目文件
  2. 执行:LspInfo命令,确认gopls和tsserver处于running状态,且根目录识别正确(Go项目需存在go.mod,JS项目需存在package.json)
  3. 导入第三方包后,输入包名加.,测试补全是否正常
  4. 若Go项目仍无补全,执行go mod tidy确保依赖已下载,gopls需要依赖的类型信息才能提供补全

内容的提问来源于stack exchange,提问作者Abdulelah Othman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:57:31