新建.sublime-snippet文件需满足三要素:后缀必须为.sublime-snippet,存放于Packages/User/目录(通过Preferences→Browse Packages…定位),内容为合法XML且根节点为<snippet>,包含<content>、<tabTrigger>和可选<scope>。

怎么新建一个 .sublime-snippet 文件
Sublime 的代码片段本质就是一个 XML 格式的 .sublime-snippet 文件,放在特定目录下才能被识别。不是写完保存就行,路径错、后缀名错、XML 格式错,全都不生效。
- 必须用
.sublime-snippet作为后缀(少一个连字符或写成.snippet都不行) - 文件要放在 Sublime 的
Packages/User/目录下(Windows/macOS/Linux 路径不同,但通过 Preferences → Browse Packages… 打开的就是正确位置) - 内容必须是合法 XML,且根节点为
<snippet></snippet>,里面必须包含<content></content>和<tabtrigger></tabtrigger>
示例最小可用片段(保存为 Packages/User/log-js.sublime-snippet):
<snippet> <content><![CDATA[console.log($1);]]></content> <tabTrigger>log</tabTrigger> <scope>source.js</scope> </snippet>
为什么 tabTrigger 不生效
最常见原因是作用域(<scope>)没配对,或者拼写错误。Sublime 不会报错,只是静默忽略——你敲 log + Tab,啥也不发生,还以为是快捷键冲突。
-
<scope>值必须和当前文件的语法定义匹配,比如 JS 文件通常是source.js,React JSX 是source.js.jsx,Vue 单文件组件的 script 块是source.js.embedded.html - 不确定当前作用域?打开命令面板(
Ctrl+Shift+P/Cmd+Shift+P),输入View Package File→ 选Syntaxes/JavaScript/JavaScript.sublime-syntax,看顶部scope: source.js那行 - 想全局生效?可以删掉
<scope>,但不推荐——容易在非目标语言里误触发
如何让 snippet 支持多光标和变量跳转
靠 $1、$2 这类占位符实现跳转顺序,$0 是最终光标停留位。但直接写 $1 不会自动高亮或补全,得用 ${1:default} 格式才带默认值和可编辑框。
-
${1:console}表示第一个跳转位,默认显示console,可编辑;$2后按 Tab 就跳到第二处 -
$0必须出现一次,且只出现一次,代表最后光标位置(比如函数体写完后自动跳到结尾分号后) - 避免用
$1重复多次——它们会同步变化,不是独立字段;真要重复输入,用${1:xxx}+${1}
比如写一个带参数的函数片段:
<content><
















