合法JSON片段文件必须是XML格式、以.sublime-snippet为后缀、存于Packages/User/目录,含正确闭合的、(无空格)、(如source.json),且需用CDATA包裹并支持$1等占位符。

Sublime Text 本身不提供 JSON 片段(snippets)的默认支持,必须手动创建或导入符合 sublime-snippet 格式的 XML 文件,且文件名、作用域(scope)、触发词(tabTrigger)三者缺一不可,否则按 Tab 不会补全。
怎么写一个合法的 JSON 片段文件
JSON 片段本质是 XML,不是 JSON;它必须以 .sublime-snippet 为后缀,保存在 Packages/User/ 目录下(可通过 Preferences → Browse Packages… 打开)。常见错误是直接新建 .json 文件或复制网上不带 scope 的旧模板。
-
scope必须设为source.json(对纯 JSON 文件生效),若想在.jsonc或 JS 文件里也触发,得写成source.json, source.jsonc, source.js -
tabTrigger是你敲完后按Tab触发的关键字,比如设为obj,输入obj再按Tab就展开对象结构 -
content里的占位符用$1、$2表示光标跳转位置,双引号和换行需用 XML 实体或 CDATA 包裹,例如:"${1:key}": ${2:"value"}
示例(保存为 Packages/User/json-object.sublime-snippet):
<snippet><content><tabtrigger>obj</tabtrigger><scope>source.json</scope><description>JSON object template</description></content></snippet>
为什么输入 tabTrigger 后按 Tab 没反应
最常见原因是作用域不匹配——当前文件右下角显示的不是 JSON,而是 Plain text 或 JavaScript。Sublime 只对 scope 声明的语法类型激活片段。
- 点击右下角语言名 →
Set Syntax → JSON(确保是大写的 JSON,不是 JSON with Comments) - 检查片段文件是否放在
Packages/User/下,而非Packages/JSON/或桌面 - 文件名必须以
.sublime-snippet结尾,Windows 用户容易误存为.sublime-snippet.txt - 重启 Sublime Text:片段加载发生在启动时,新增文件不会热更新
如何复用已有 JSON 模板或批量生成片段
别手写一堆 array、string、null 片段——直接从现有合法 JSON 提取结构更可靠。
- 把一段常用 JSON(如 API 响应体)粘贴进新标签页,
Set Syntax → JSON - 选中整个对象 →
Ctrl+Shift+P→ 输入Convert to Snippet(需先装插件SnippetMaker) - 它会自动生成含正确
scope和缩进的.sublime-snippet,你只需改tabTrigger和description - 若要支持多环境(dev/staging/prod),可在
content里用${1:dev}定义可编辑变量,按Tab跳转修改
真正卡住人的不是语法,而是作用域和文件路径这两个硬性绑定条件——哪怕内容完全正确,scope 写错或放错目录,Tab 就永远静默。











