
Snippet 文件必须放在 Packages/User/ 目录下才生效
Sublime Text 不会自动扫描任意路径下的 .sublime-snippet 文件。你双击打开、拖进 Sublime、甚至用命令行复制过去,只要没放对位置,它就完全不认——连报错都不会有,只是静默失效。
正确路径是:Packages/User/(通过 菜单 → Preferences → Browse Packages… 打开,再进 User/ 文件夹)文件名随意,但后缀必须是 .sublime-snippet;比如 log-js.sublime-snippet如果用了同步工具(如 Dropbox 或 Settings Sync 插件),确保 Packages/User/ 是被同步的目录,而不是子目录嵌套了多层
trigger 和 tabTrigger 的区别决定你敲什么能弹出来
很多人写完 snippet 发现按 tab 没反应,其实是搞混了两个字段:tabTrigger 是触发关键词,trigger 是旧版或插件扩展用的,Sublime 原生只认 tabTrigger。
tabTrigger 必须是纯英文+数字+短横线,不能含空格或中文,比如 log、fori、http-get触发时要先输入完整 tabTrigger,再按 Tab(不是 Enter 或鼠标点)如果和其他插件(如 Emmet)冲突,比如都设成 div,Sublime 会优先匹配更精确的(长度更长或 scope 更匹配的那个)<snippet> <content><![CDATA[console.log($1); $0]]></content> <tabTrigger>log</tabTrigger> <scope>source.js</scope></snippet>
scope 属性控制“在哪种文件里生效”,漏写就等于全局禁用
没加 scope,Snippet 默认只在纯文本(text.plain)里工作。你在 .js 文件里敲 log+Tab,它不会展开——因为 JS 文件的 scope 是 source.js,不是默认值。
常用 scope 值:source.js、source.python、text.html.basic、source.css查当前文件 scope:按 Ctrl+Shift+P(Win/Linux)或 Cmd+Shift+P(Mac),运行 Support Info,最后一行会显示当前 scope支持多 scope,用逗号分隔:<scope>source.js, source.ts</scope>
变量和跳位($0 $1 $2)顺序错乱会导致光标卡住
Snippet 展开后光标停在奇怪位置、按 Tab 跳不到下一个占位符,基本都是 $0 和 $1 写反了,或者重复写了同一个数字。
$1 是第一个可编辑位置,$2 是第二个……$0 是最终光标落点(通常放末尾)所有数字必须从 1 开始连续,不能跳号(比如只有 $1 和 $3),否则中间的跳位会失效避免在 <content> 里手误多打一个 $,比如 $log 会被当变量解析,结果输出成空字符串Sublime 的 Snippet 看似简单,但路径、scope、tabTrigger、跳位这四个点只要错一个,就彻底不工作——而且它不会告诉你哪错了,只会安静地假装不存在。

评论(0)