合法 Sublime Snippet XML 文件需以 为根节点,保存为 .sublime-snippet 后缀,置于 Packages/User/ 目录;scope 必须匹配语法作用域(如 source.js),内容推荐用 CDATA 包裹,变量用 $1、${1:default} 等格式。
如何创建一个合法的 Sublime Snippet XML 文件
Sublime 的代码片段本质是 XML 文件,必须严格遵循
根节点结构,否则不会出现在片段列表中。常见失效原因就是漏了
外层包裹,或误用
扩展名。
文件必须保存为
(后缀名不能错)
根节点必须是
,内部依次为
、
、
、
中的换行和缩进会被原样插入,建议用 CDATA 包裹多行模板,避免转义问题
变量占位符用
、
表示跳转顺序,
是最终光标位置;重复变量如
可同步更新
scope 值怎么填才让片段只在 JS/HTML/CSS 中生效
不是文件后缀,而是 Sublime 内部的语法
作用域
(syntax scope),它由当前文件所用的 .
sublime
-syntax 或 .tmLanguage 定义。填错 scope 就等于“写了但永远触发不了”。
JS 文件常用 scope:
(ES5)、
(React)、
(TypeScript)
HTML 文件:优先用
,若需区分 Vue/Svelte 模板,可用
或
(依赖对应插件)
CSS/SCSS:用
或
,不要写成
或
查当前文件真实 scope:按
→ 输入
,光标所在位置会显示完整 scope 链
带多光标跳转和条件逻辑的高级片段写法
纯
/
只能线性跳转,复杂模板需要变量绑定、默认值、镜像同步甚至简单分支。Sublime 支持基础变量语法,但不支持运行时判断(如 if/else)。
php版微信js-sdk支付接口类
php版微信js-sdk支付接口类
下载
同步修改同一变量:
在多个位置出现,首次输入后其余位置自动更新
设置默认值:
,Tab 跳过时保留 defaultText;留空
则跳过时不填内容
嵌套占位:
表示第 2 个位置默认取第 1 个位置的值
避免意外覆盖:如果片段含
符号(如正则
或 CSS
),必须写成
或
转义
片段不生效?检查这四个隐藏卡点
多数“写了没反应”问题不在代码本身,而在
环境配置
或路径细节。
片段文件没放在正确目录:应存于
(通过
打开),而非
或任意子文件夹
文件
编码
不是 UTF-8 无 BOM:用 VS Code 或 Sublime 自身另存为 UTF-8,BOM 会导致解析失败
已有同名 snippet 被插件覆盖:比如 Emmet 也注册了
,可临时禁用插件测试,或改用更特异的
触发词
scope 冲突:例如在 JSX 文件中同时匹配
和
,Sublime 会选更具体的那个;若你只写了前者,就可能不生效
scope 和文件路径这两项,比内容语法更容易出问题,调试时优先确认它们。
sublime-snippet.sublime-completionsxxx.sublime-snippet$1$2$0${1:name}
log
source.js
console.log with placeholder
]]>source.jssource.js.jsxsource.tstext.html.basictext.html.vuetext.html.sveltesource.csssource.scsscss.cssCtrl+Shift+PDeveloper: Show Scope Name${1:className}${1:defaultText}${1:}${2:${1:defaultValue}}$$1$color\$1\$colorPackages/User/Preferences → Browse Packages…Packages/Default/loglogdsource.jssource.js.jsx