在 Sublime Text 中创建自定义 Snippet 需手动新建 XML 文件(.sublime-snippet)置于 Packages/User/ 目录,通过 Tools → Developer → New Snippet… 生成模板,修改 content、tabTrigger 和 scope 后保存;tabTrigger 须为字母数字下划线组合,scope 要匹配目标语法(如 source.js),支持 $1、$2、${1:default}、$0 等跳位变量;修改后需重启或执行 Reload Syntaxes 刷新生效。

怎么在 Sublime Text 里创建自定义 Snippet
Sublime Text 的 Snippet 是纯 XML 文件,放在 Packages/User/ 目录下,后缀为 .sublime-snippet。它不是 JSON 或 YAML,也不是通过设置菜单点出来的功能——必须手动新建文件并按规范写。
- 打开 Sublime → Tools → Developer → New Snippet…,会生成一个带注释的模板
- 把
content里的占位内容替换成你要展开的代码,比如console.log($1); - 修改
tabTrigger(比如设为log),保存时命名为log.sublime-snippet - 保存路径必须是
Packages/User/(可通过 Preferences → Browse Packages… 快速打开)
tabTrigger 不生效?检查这几点
输完触发词按 Tab 没反应,大概率是配置或路径问题,不是 Sublime 坏了。
-
tabTrigger值不能含空格或特殊符号,只支持字母、数字、下划线,比如http-get❌,http_get✅ - 文件名必须和
tabTrigger一致(可不一致,但容易混淆;推荐保持一致) - 确保
scope正确:比如想在 JavaScript 里用,scope应为source.js;写成text.html就只在 HTML 文件里生效 - 如果用了多个 scope(如 JS + TS),用
source.js, source.ts,逗号后不能有空格
Snippet 里怎么用变量和跳位($1 $2 ${1:default})
这些不是字符串拼接,是 Sublime 内置的动态字段语法,用于控制光标位置和默认值。
-
$1、$2表示 Tab 键顺序跳转的位置,数字越大越后跳 -
${1:foo}表示第 1 个跳位,默认显示foo,可直接编辑 -
$0是最终光标停留位(常放在结尾,比如函数体后) -
$TM_SELECTED_TEXT可插入当前选中文本(适合包裹类 snippet,如加/** */注释)
if source.js JS if statement
为什么改了 snippet 文件没立刻生效
Sublime 不自动重载 Snippet,改完要手动触发刷新,否则旧缓存还在用。
- 重启 Sublime 是最稳妥的方式
- 或者用命令面板:Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(Mac)→ 输入
Reload Syntaxes,回车执行 - 注意:不是
Reload Package,那个针对插件,对 Snippet 无效 - 如果仍不生效,检查控制台(View → Show Console)是否有 XML 解析错误,比如标签没闭合、引号不匹配
实际用得多的 snippet 往往就三五行,但 scope、tabTrigger、跳位顺序这三个地方错一个,就等于白写。别图快跳过验证步骤——在空白 .js 文件里输一遍 trigger 再按 Tab,比看十遍文档更管用。










