LSP-json需手动绑定Schema才能实现字段级校验和补全。必须检查语法是否为JSON/JSONC、确认控制台有“Loaded schema from”日志、使用相对路径配置schemas,并按优先级选择注释、同目录命名或全局映射方式。

LSP-json 能让 Sublime Text 对微服务配置文件(如 application.json、service-config.json)实现字段级校验和补全,但装完插件不等于开箱即用——它不会自动识别 Schema,必须显式绑定路径,否则连最基础的必填字段提示都不会出现。
为什么装了 LSP-json 却没任何 Schema 提示?
根本原因是 LSP-json 客户端压根没加载到 Schema。它不像浏览器那样解析 $schema 字段,也不扫描项目目录找 schema.json,一切依赖手动声明。
- 检查右下角语法是否为
JSON或JSONC(不是Plain Text),否则 LSP-json 根本不启动 - 打开控制台(
Ctrl+`),搜索Loaded schema from—— 若无此日志,说明绑定失败 - 常见漏配点:
schemas配置写在LSP-json.sublime-settings里,但误贴进了全局Preferences.sublime-settings - 路径写成
file:///或绝对路径(如C:\schemas\order.schema.json)会静默失效,必须用相对路径(如./schemas/order.schema.json)
三种 Schema 绑定方式,选错就白配
绑定方式决定作用范围和维护成本,不能混用。优先级:文件内注释 > 同目录命名规则 > 全局 schemas 列表。
- 单文件专用:在 JSON 文件顶部加注释
// @schema ./schemas/payment-service.schema.json,路径相对于当前文件 - 同目录自动匹配:把 Schema 命名为
schema.<filename>.json</filename>(如schema.application.json),放同一目录下即可 - 全局批量映射:在
LSP-json.sublime-settings中写"schemas": [{"file_match": ["**/config/*.json"], "url": "./schemas/microservice-base.schema.json"}],注意file_match是 glob 模式,**/config/*.json匹配src/config/app.json,但不匹配config.json
Schema 加载了但字段写错也不标红?查这三个硬伤
控制台显示 Loaded schema from 只代表路径可读,不代表 Schema 本身有效或约束能生效。
-
file_match没命中:用Ctrl+Alt+Shift+P看当前文件 scope,确认是否为source.json;再查控制台里 LSP 打印的实际文件路径,对比 glob 是否含多余斜杠或大小写差异 - Schema 语法无效:用命令行验证
jsonschema -i application.json schemas/order-service.schema.json,避免 Draft-04 的required写法在 Draft-07 环境下被忽略 - Schema 里用了
$ref但引用文件缺失或编码错误:确保所有被引用的 JSON 文件都是 UTF-8 无 BOM,且路径在项目内可访问(不能跨盘符或用网络路径)
补全内容空、枚举值不提示?关键在 Schema 的 enum 和 type 写法
LSP-json 补全质量直接取决于 Schema 描述精度,不是插件问题。
- 枚举值必须写成
"enum": ["dev", "staging", "prod"],写成"enum": "dev"或放在description里都不触发补全 - 嵌套对象字段要明确
"type": "object"并定义"properties",只写"type": "string"不会提示子字段 - 数组项补全需用
"items"而非"item",且"items"下必须有完整类型定义(如{"type": "string"}) - 如果补全框只显示字段名不带描述,检查 Schema 是否包含
"description"字段,LSP-json 会原样展示该文本
最容易被忽略的是:Schema 文件里一个不可见的 BOM 头、路径中一个多余的点号、或者 file_match 少写了一个星号,都会导致整个校验链静默中断——没有报错,也没有提示,就像什么都没配过一样。


















