vs code插件同步依赖云端保存extensions.json或启用settings sync,后者自动同步启用的插件、设置等;手动备份需用code --list-extensions --show-versions带版本号;禁用插件不会被同步,须手动启用后触发同步。

插件列表怎么同步到云端
VS Code 的插件本身不能直接“上传”到云端,它只记录已安装插件的 ID 列表(extensions.json),真正恢复时靠 VS Code 自动从 Marketplace 拉取。关键在于把 extensions.json 保存进你的云同步流程。
手动导出命令是:code --list-extensions > extensions.json;但更稳妥的是用 VS Code 内置的配置同步功能(Settings Sync),它会自动抓取你启用的插件、设置、键位、代码片段等——前提是开启并登录了 GitHub 账户。
- 如果禁用了 Settings Sync,又想手动备份:定期运行
code --list-extensions --show-versions,结果带版本号,能避免因插件更新导致行为不一致 - 别把
.vscode/extensions/整个目录上传——体积大、含平台相关二进制、不同机器可能冲突 - 第三方工具如
vsce或code-sync不推荐,它们绕过官方机制,容易在 VS Code 升级后失效
settings.json 同步要注意路径和权限
settings.json 位置因系统而异:$HOME/Library/Application Support/Code/User/settings.json(macOS)、%APPDATA%\Code\User\settings.json(Windows)、$HOME/.config/Code/User/settings.json(Linux)。直接复制这个文件就能复用,但有三个常见陷阱:
- 绝对路径类配置(比如
"files.exclude"里写了"/Users/you/project/node_modules")在另一台机器上会失效甚至报错 - 某些扩展写入的 settings(如 Prettier、ESLint)依赖本地可执行文件路径,同步后需重新配置
prettier.resolveGlobalModules或eslint.runtime - 若用 Git 管理
settings.json,记得把敏感字段(如git.postCommitCommand带 token 的脚本)加进.gitignore,或改用settingsSync.ignoredSettings排除
Settings Sync 开启后为什么插件没装全
这是最常被忽略的一点:Settings Sync 默认**只同步“已启用”的插件**,而 VS Code 允许你禁用插件却不卸载。如果你某台机器上曾禁用过 ms-python.python,即使它还在 extensions 目录里,Sync 也不会把它推到云端,其他设备也就不会自动安装。
- 检查方式:打开命令面板(
Ctrl+Shift+P),运行Extensions: Show Enabled Extensions,再对比Extensions: Show Installed Extensions - 修复方法:在任一设备上右键所有“已安装但未启用”的插件 → “Enable (Workspace)” 或 “Enable (Global)”,再等 Sync 完成
- 注意:某些插件(如 Live Share)在未登录对应服务时会被 Sync 自动跳过,这不是 bug,是设计如此
自定义代码片段(snippets)怎么才算真正同步
VS Code 的用户代码片段存放在 snippets/ 子目录下,文件名即语言标识(如 javascript.json)。Settings Sync 会同步它们,但有两个隐藏条件:
- 必须是放在
User/snippets/下的文件;放在工作区.vscode/snippets/里的不会上传 - 文件名必须合法:不能含空格、中文、特殊符号;
my-react-snippet.json可以,react 组件.json会静默失败 - 如果片段里用了变量(如
"$TM_FILENAME_BASE"),确保目标机器 VS Code 版本 ≥ 1.60,旧版本不支持部分变量语法
复杂逻辑的片段(比如调用 shell 命令生成时间戳)不要放进去——Sync 不执行它们,只传静态 JSON,这类需求该交给插件或任务配置。










