nvim lsp配合yaml-language-server校验OpenAPI文件未生效问题求助
解决方案
1. 修正配置错误
首先排查以下常见配置问题:
- 升级yaml-language-server到最新稳定版,执行命令:
npm install -g yaml-language-server@latest - 修正文件名匹配规则:你当前设置的
fileMatch = { ".openapi.yaml" }仅匹配完全命名为.openapi.yaml的隐藏文件,若你的OpenAPI文件命名为openapi.yaml、xxx.openapi.yaml这类格式,需调整匹配规则 - 修正schemas配置格式:yamlls的schemas字段更稳妥的写法为键值对格式,键为schema地址,值为匹配规则,参考配置如下:
lspconfig.yamlls.setup { on_attach = on_attach, flags = { debounce_text_changes = 150, }, settings = { yaml = { schemas = { -- 替换为你本地schema的绝对路径对应的file协议地址 ["file:///你实际的本地绝对路径/openapi.schema.yaml"] = {".openapi.yaml", "openapi.yaml", "*.openapi.yaml"} }, format = { enable = true, singleQuote = false, bracketSpacing = true }, validate = true, completion = true, -- 关闭公共schema store避免冲突 schemaStore = { enable = false } } } }
- 确认本地schema路径正确:file协议地址在Linux/macOS下为
file:///开头三个斜杠,Windows下为file:///C:/路径/xxx.yaml格式,必须填写绝对路径。
2. 开启日志排查
若修改配置后仍未生效,按以下步骤获取运行日志:
- 在你的init.vim/init.lua文件最开头添加配置,开启LSP debug日志:
vim.lsp.set_log_level("debug") - 重启nvim并打开你的OpenAPI文件,触发一次校验后,执行命令
:checkhealth lsp即可查看日志文件路径,默认路径为:- Linux/macOS:
~/.local/state/nvim/lsp.log - Windows:
%LOCALAPPDATA%\nvim-data\lsp.log
- Linux/macOS:
- 打开日志文件搜索
schema、yamlls相关关键词,即可查看服务端是否成功加载本地schema、是否匹配到当前打开的文件。
3. 验证生效方法
修改配置重启nvim后,打开OpenAPI文件执行:LspInfo确认yamlls已挂载到当前缓冲区,故意添加一个不符合OpenAPI规范的顶级字段,比如invalid_test_field: 123,若出现对应的校验错误提示,说明配置已生效。
内容的提问来源于stack exchange,提问作者user3166886
相关产品推荐
相关产品推荐

