user snippets 默认不参与同步,必须手动勾选才能生效;因其采用 opt-in 策略,未勾选时vscode静默跳过加载与上传,即使登录同一账号、显示“synced”也不会同步片段文件。

User Snippets 默认不参与同步,必须手动勾选才能生效。
为什么 User Snippets 没同步过去?
VSCode 同步机制对代码片段(即你存在 ~/Library/Application Support/Code/User/snippets/ 或 %APPDATA%\Code\User\snippets\ 下的 JSON 文件)采取“ opt-in”策略:它不会自动上传或拉取,除非你在首次开启同步时明确勾选 User Snippets。
常见现象包括:
- 在 A 电脑写了
log片段并保存,B 电脑登录同一账号后仍无该片段 - 状态栏显示
Synced,但打开Insert Snippet菜单看不到自定义项 - 运行
Developer: Show Running Extensions,发现Location列为User而非Sync
如何确认 User Snippets 已纳入同步?
执行 Preferences: Configure Sync,检查列表中 User Snippets 是否打钩;若未勾选,点击启用即可。注意:
- 勾选后不会立即覆盖本地文件,而是下次同步时上传当前内容到云端
- 新设备首次同步时,需选择
Download and merge(而非Replace),否则已有本地片段会被清空 -
.code-snippets文件本身不被同步,只同步snippets/目录下的 JSON 文件
User Snippets 同步失败的隐藏原因
即使勾了选项,也可能因以下原因静默失效:
- 片段文件名含非法字符(如空格、中文、点号开头),VSCode 会跳过加载,自然也无法同步
- JSON 格式错误(如末尾多逗号、用单引号、含注释),同步时被丢弃且不报错
- 片段定义里用了平台专属路径(如
"body": ["console.log('${env:HOME}/test')"]),在另一系统上变量解析失败,导致整个文件不被识别 - 扩展自己注册的 snippets(如 Prettier、ESLint 插件内置的修复片段)不属于
User Snippets,默认不同步,也不受该开关控制
替代方案:手动导出/导入更可控
如果同步不稳定或需审计内容,可绕过云端直接迁移:
- 导出:
Ctrl+Shift+P→Preferences: Configure User Snippets→ 点右上角…→Export Snippets - 导入:
Preferences: Configure User Snippets→Import Snippets→ 选 JSON 文件 - 导入后记得重启 VSCode 或重载窗口(
Developer: Reload Window),否则新片段可能不生效











