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