VSCode代码片段支持变量与占位符实现动态生成,如$TM_FILENAME_BASE可转PascalCase命名,${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}}兼顾自动填充与手动编辑,提升开发效率。
VSCode 的代码片段(Snippets)支持变量(Variables)和占位符(Placeholders),能让你在插入代码时自动填充上下文信息,比如文件名、光标位置、当前时间、选中内容等——这正是实现轻量级动态代码生成的关键。
常用内置变量及其用途
VSCode 提供了一批开箱即用的变量,写在代码片段的
或
中即可生效:
$TM_FILENAME
:当前文件名(含扩展名),如
$TM_FILENAME_BASE
:文件名不含扩展名,如
$TM_DIRECTORY
:文件所在目录的绝对路径
$CLIPBOARD
:系统剪贴板内容(粘贴即用)
$SELECTION
:当前选中的文本(触发片段前需先选中)
$CURRENT_YEAR
、
$CURRENT_MONTH
、
$CURRENT_DATE
:自动生成日期信息
$WORKSPACE_NAME
:当前打开的工作区名称
用转换(Transform)实现简单逻辑处理
变量可配合正则转换(transform)做大小写转换、前缀替换、移除扩展名等。语法为:
。
例如,在 React 组件片段中自动生成 PascalCase 的组件名:
这里
会把
→
。
其他常用转换:
(大写)、
(小写)、
、
,都无需手写正则。
VSCode 1.118
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
下载
结合占位符与变量实现交互式生成
变量是静态上下文,占位符(如
)支持用户编辑。两者组合可兼顾自动化与灵活性:
:默认填入转换后的文件名,但允许你手动修改
:第二个位置默认写
,第三个位置若已有选中文本,则自动填入,否则留空可编辑
注意:占位符序号(
,
)决定跳转顺序,相同序号会同步更新(适合多处复用同一输入)。
进阶技巧:条件判断与嵌套转换(有限支持)
VSCode 原生不支持 if-else,但可用正则“模拟”简单分支。例如:仅当文件名含
时添加
块:
更可靠的方式是配合插件(如
Regex Previewer
)调试表达式,或把复杂逻辑交给任务脚本/自定义命令——片段本身适合轻量、确定性高的场景。
基本上就这些。变量不是万能的,但用好它,能省掉大量机械命名和重复填写,让代码生成真正“懂你”。
$${}index.tsindex${variable/regex/replacement/flags}"component": {
"prefix": "rc",
"body": [
"const ${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/} = () => {",
" return ;",
"};",
"",
"export default ${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/};"
]
}${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}user-list.tsxUserList/upcase/downcase/camelcase/snakecase${1:default}${1:${TM_FILENAME_BASE/(.*)/${1:/pascalcase}/}}${2:props}${3:?: ${SELECTION}}props$1$2.test.describe${TM_FILENAME/(.*test.*)/describe('${TM_FILENAME_BASE}', () => {/}