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

Nvim中自定义Luasnip代码片段不显示问题求助

问题:自定义VSCode风格片段无法在LuaSnip中加载

已配置nvim-cmp+LuaSnip,能正常使用rafamadriz/friendly-snippets的片段,但自定义片段无法显示,禁用官方片段后仍无效。

配置问题分析

从提供的代码来看,存在3个核心问题:

  1. package.json路径与LuaSnip加载目录冲突
  2. html.json存在语法错误(缺失闭合大括号)
  3. LuaSnip加载路径使用相对路径,易出现定位错误

修复步骤

1. 调整文件夹结构与package.json

将~/.config/nvim/package.json移动到~/.config/nvim/my-snippets目录下,同时修正文件内的片段路径(移除未创建的global.json条目,避免加载报错):

{
  "name": "my-custom-snippets",
  "engines": {
    "vscode": "^1.11.0"
  },
  "contributes": {
    "snippets": [
      {
        "language": ["html", "jade", "pug", "eruby", "javascriptreact", "htmldjango", "astro", "blade"],
        "path": "./html.json"
      }
    ]
  }
}

2. 修复html.json语法错误

在文件末尾添加缺失的闭合大括号,修正后的内容:

{
  "html5c": {
    "prefix": "html5c",
    "body": [
      "<!DOCTYPE html>",
      "<html lang=\"$1en\">",
      "\t<head>",
      "\t\t<meta charset=\"UTF-8\">",
      "\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">",
      "\t\t<title>$2</title>",
      "\t\t<link href=\"$3css/style.css\" rel=\"stylesheet\">",
      "\t</head>",
      "\t<body>",
      "\t$0",
      "\t</body>",
      "</html>"
    ],
    "description": "MCP HTML - Defines a template for a html5 document w/Bootstrap",
    "scope": "text.html"
  }
}

3. 修正LuaSnip加载路径

使用Neovim内置变量指定绝对路径,避免相对路径定位错误,修改nvim-cmp配置中的加载代码:

-- 加载自定义VSCode风格片段
require("luasnip.loaders.from_vscode").lazy_load({ 
  paths = { vim.fn.stdpath("config") .. "/my-snippets" } 
})

4. 验证操作

  • 保存所有配置文件
  • 重启Neovim
  • 打开HTML文件,输入html5c即可触发自定义片段补全

额外调试技巧:

  • 执行:LuaSnipListAvailable查看已加载片段列表,确认自定义片段是否存在
  • 执行:checkhealth luasnip排查加载过程中的错误日志

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:55:04