Sublime Text 的 snippet 文件必须置于 Packages/User 目录下才生效,路径因系统而异;文件名需用英文+下划线,避免中文和多余空格;XML 格式须严格闭合,content 中的换行缩进会被原样插入。

Snippet 文件必须放在 Packages/User 目录下才能被识别
Sublime 不会自动扫描任意路径的 .sublime-snippet 文件。如果你把 snippet 放在桌面或项目文件夹里,它根本不会生效。正确路径是:Packages/User/xxx.sublime-snippet(可通过菜单 Preferences → Browse Packages… 打开该目录)。
- Windows:`%APPDATA%\Sublime Text\Packages\User\`
- macOS:`~/Library/Application Support/Sublime Text/Packages/User/`
- Linux:`~/.config/sublime-text/Packages/User/`
注意:不要用中文路径或空格过多的文件名,部分版本会加载失败;文件名建议用英文+下划线,比如 log_console.sublime-snippet。
XML 格式必须严格闭合,content 里的换行和缩进会被原样插入
一个 snippet 是标准 XML 文件,根节点必须是 ,且 、、 都要成对出现。常见错误包括:
- 忘记给
加![CDATA[和]]>—— 特殊字符(如{、)会导致解析失败 - 在
里写 Tab 缩进,结果触发时代码块会多出几级缩进(应使用空格对齐,或直接顶格写 + 用$1定位光标) -
填错,比如想用于 JavaScript 却写了source.css,导致快捷键不响应
示例(React 函数组件 snippet):
{ return ( $2); }; export default $1; ]]>rfc source.js, source.jsx React Functional Component
触发关键词(tabTrigger)区分大小写,且不能含空格或特殊符号
tabTrigger 是你输入后按 Tab 触发的字符串,Sublime 默认严格匹配大小写。比如设为 Log,输入 log 再按 Tab 就没反应。
- 推荐全小写,避免误触发
- 不要用
console.log这类带点的写法 —— Sublime 会把它当两个词处理,实际只认最末尾的单词 - 如果多个 snippet 的
tabTrigger相同,后加载的会覆盖前一个(按文件名 ASCII 排序) - 可配合
实现同 trigger 不同语言:比如for在 JS 中展开 for-of,在 Python 中展开 for-range(需分别定义 scope)
动态字段和光标跳转用 $1、$2、$0 控制顺序
$1 是第一个可编辑位置,$2 是第二个,$0 是最终光标停留处(常用于收尾)。它们不是变量,只是占位符编号,重复出现也没问题。
- 比如写
console.log('$1', $2); $0,触发后先填第一个引号内内容,Tab 跳到$2,再 Tab 跳到$0 - 如果希望某处默认有值(如函数名),写成
const ${1:MyComponent} = ...,中括号内是 placeholder,默认选中可直接覆盖 - 别用
$10这种两位数 —— Sublime 只支持单数字($1–$9),$10会被当成$1后跟字符0
复杂逻辑(如条件判断、日期)无法用纯 snippet 实现,得靠插件(如 InsertDate)或自定义命令。










