Sublime Text 的代码片段必须使用 .sublime-snippet 后缀、存于 Packages/User/ 目录、全英文路径、UTF-8 无 BOM 编码,且需重启生效;tabTrigger 定义触发缩写,scope 限定语法环境,变量用 $1、${2:default} 格式。

Snippets 文件必须用 .sublime-snippet 后缀
Sublime Text 不会识别 .xml、.txt 或无后缀的文件为代码块。新建文件后,务必保存为 xxx.sublime-snippet,否则即使内容正确也不会出现在补全列表中。
常见错误是直接复制别人 snippet 内容到普通文本文件里改完就关,结果重启 Sublime 也看不到效果。路径建议放在:Packages/User/ 目录下(可通过菜单 Preferences → Browse Packages… 打开)。
tabTrigger 和 scope 决定触发时机
tabTrigger 是你敲完按 Tab 键时激活 snippet 的缩写词,比如设为 log,输入 log 再按 Tab 就展开;scope 控制它在哪些语法下生效——这点极易被忽略。
例如 JavaScript 中常用的 console.log();,如果 scope 写成 source.python,那在 JS 文件里永远触发不了。常用 scope 值有:
-
source.js(JS 文件) -
source.python(Python 文件) -
text.html.basic(HTML 文件) -
source.css(CSS 文件)
查当前文件 scope:按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入 Scope: Show Scope Name 回车,底部状态栏会显示当前光标处的完整 scope 字符串。
变量和占位符用 $1、$2、${1:default} 格式
Snippets 支持多光标跳转和默认值,但语法不是 ${var} 或 $name 这类模板写法,而是严格使用数字序号加可选默认值:
-
$1表示第一个跳转位置,按 Tab 可依次移动 -
${1:document}表示此处默认填document,可直接编辑 -
${2:selector}是第二个跳转点,常用于函数参数或 CSS 选择器
错误示例:$myVar 或 ${foo} —— Sublime 会原样输出,不解析也不跳转。
一个实用的 JS snippet 片段:
clg source.js console.log with two args
中文路径或特殊字符可能让 snippet 加载失败
如果你把 .sublime-snippet 文件放在含中文、空格或符号(如 【】、&)的路径下,Sublime 可能静默跳过加载——不会报错,但就是不出现。
解决办法只有两个:
- 确保文件路径全英文、无空格(如
Packages/User/js-log.sublime-snippet) - 重启 Sublime Text(修改或新增 snippet 后必须重启才生效,仅刷新菜单不够)
另外,文件编码必须是 UTF-8 无 BOM,用 VS Code 或 Sublime 自身另存时注意勾选该选项。BOM 头会导致解析失败,现象是 snippet 完全不可见。










