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

使用mason.nvim+nvim-cmp+UltiSnips时Neovim LSP自动补全失效

一、核心修复:完善LSP服务初始化配置

你的lsp.lua仅初始化了lua_ls,但pylsp、clangd等其他需要的LSP未调用setup,也未传递cmp_nvim_lsp的能力配置——LSP服务未启动,自然无法提供补全。

修改lsp.lua,用批量初始化方式启动所有Mason安装的LSP:

-- lsp.lua
require("mason").setup({
  ui = {
      icons = {
          package_installed = "✓",
          package_pending = "➜",
          package_uninstalled = "✗"
      }
  }
})

require("mason-lspconfig").setup({
  ensure_installed = {
    "lua_ls",
    "clangd",
    "jsonls",
    -- 若需要LaTeX补全,取消下方注释
    -- "ltex",
    -- "texlab",
    "pylsp",
    -- "pylyzer",
    "vimls"
  }
})

local capabilities = require('cmp_nvim_lsp').default_capabilities()
local lspconfig = require('lspconfig')

-- 批量初始化所有Mason安装的LSP,自动传递补全能力
require("mason-lspconfig").setup_handlers {
  function(server_name)
    lspconfig[server_name].setup {
      capabilities = capabilities,
    }
  end,
  -- 单独配置lua_ls(可选,解决vim全局变量报错)
  ["lua_ls"] = function()
    lspconfig.lua_ls.setup {
      capabilities = capabilities,
      settings = {
        Lua = {
          diagnostics = {
            globals = {'vim'},
          },
        },
      },
    }
  end,
}

如果需要LaTeX的LSP补全,取消texlab或ltex的注释,Mason会自动安装,上述批量配置也会自动启动服务。

二、调试定位方法

若修复后仍无响应,按以下步骤排查:

  • 检查LSP运行状态:打开目标文件(如Python/LaTeX文件),执行:LspInfo,查看对应LSP是否处于running状态。若显示not running,说明服务启动失败。
  • 查看LSP日志:执行:LspLog,搜索error关键词,定位启动失败原因(如依赖缺失、配置语法错误)。
  • 验证cmp源状态:执行:CmpStatus,确认nvim_lsp源处于active状态。若为inactive,说明cmp未正确关联LSP能力。
  • 手动触发补全:编辑时按<C-Space>手动触发补全,若能弹出LSP补全项,说明自动触发逻辑有问题,可检查cmp的completion.autocomplete配置(默认值为{ 'TextChanged', 'InsertEnter' })。
  • 确认插件安装状态:执行:PackerStatus,检查cmp-nvim-lsp、mason-lspconfig、nvim-lspconfig等核心插件是否为installed状态,缺失则执行:PackerSync重新安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:23:11