掌握Sublime Text高级Snippet语法可提升编码效率。1. 使用$TM_变量(如$TM_SELECTED_TEXT、$TM_CURRENT_WORD)自动获取上下文信息,实现智能代码包裹与生成;2. 结合占位符${index:default}和$0光标定位,支持默认值与跳转编辑;3. 利用${variable/pattern/format/flags}正则转换,实现首字母大写、kebab-case转换等动态处理;4. 通过Tools→Developer→New Snippet创建并保存至Packages/User/,设置触发词与作用域。合理运用可构建感知上下文的智能模板。

在 Sublime Text 中,代码片段(Snippet)是提升编码效率的重要工具。通过高级 Snippet 语法,你可以创建带有动态变量的模板,让插入的代码更智能、更灵活。下面介绍如何使用 Sublime 的高级 Snippet 功能实现动态变量。
1. 动态变量基础:$TM\_ 变量
Sublime 内置了一系列以 $TM_ 开头的动态变量,它们能自动获取当前上下文信息:
- $TM_SELECTED_TEXT:当前选中的文本(用于包裹场景)
- $TM_CURRENT_LINE:光标所在行的内容
- $TM_CURRENT_WORD:光标所在的单词
- $TM_LINE_INDEX:当前行的字符索引(从0开始)
- $TM_LINE_NUMBER:当前行号(从1开始)
- $TM_FILENAME:当前文件名(含扩展名)
- $TM_DIRECTORY:当前文件所在目录路径
- $TM_FILEPATH:完整文件路径
例如,创建一个包裹选中文本为 div 的 snippet:
选中任意文本后输入 divwrap + Tab,即可将其包裹进 div 并快速填写 class。
2. 使用占位符与默认值
占位符格式为 ${index:default},用户可依次跳转编辑。支持嵌套和条件逻辑。
- ${1:className}:第一个可编辑位置,默认值为 className
- ${2:children}:第二个位置
- $0:最终光标停留位置
示例:React 函数组件模板
这里利用了 $TM_CURRENT_WORD 自动提取光标处单词作为组件名,默认为 ComponentName。
3. 变量转换:正则替换语法
最强大的功能是 ${VARIABLE/regex/format/option},可对变量进行正则处理。
语法说明:
${variable/pattern/format/flags}常见用途:
-
首字母大写:
${1/(.*)/${1:/upcase}/} -
转为 kebab-case:
${1/[A-Z]/-$0/g}然后 trim 去首横线 -
提取文件名并去后缀:
${TM_FILENAME/\\.(.+)$//}
实战:生成 CSS BEM 类名
再进阶:自动根据 block 名生成注释
/** $1 component */ .${1:card}__${2:header}4. 实际操作步骤
创建自定义 snippet 的流程:
- 菜单 → Tools → Developer → New Snippet…
- 编辑 CDATA 区域内容
- 设置 tabTrigger、scope 和 description
- 保存为 MyDynamic.sublime-snippet 到 Packages/User/
建议命名清晰,便于后续管理。
基本上就这些。掌握 $TM_ 变量和正则转换后,你可以让 snippet 感知上下文,真正实现“智能模板”。不复杂但容易忽略细节的是转义和作用域匹配,多试几次就能熟练。










