code --list-extensions 是唯一可信的插件导出方式,输出纯文本、每行一个官方插件 id(如 ms-python.python),无版本号、无空格、无 bom,可直接用于跨平台重装。

code --list-extensions 是唯一可信的插件导出方式
手动复制扩展面板里的“Python”“Prettier”这类显示名,100%会失败——VS Code 安装只认插件 ID(如ms-python.python),不认中文名、空格或大小写变体。截图、右键复制、甚至“复制扩展 ID”按钮在某些版本里都可能带不可见字符或换行。
正确做法只有一条命令:code --list-extensions。它输出纯文本、每行一个 ID、无版本号、无 BOM、无空格,跨平台可直接用于重装。
-
--show-versions会导致输出ms-python.python@2024.12.1,但code --install-extension不识别@后内容,直接报错Extension 'xxx@yyy' not found - 禁用的插件默认不出现在结果中,这是设计行为,不是 bug;重装时通常也不需要恢复禁用状态
- Windows CMD 提示
command not found?先在 VS Code 里按Ctrl+Shift+P运行Shell Command: Install 'code' command in PATH
settings.json 覆盖前必须清理三类危险字段
直接把旧机 settings.json 拷过去,大概率导致 Python 插件启动失败、终端打不开、搜索失效,甚至整个 Profile 变成灰色不可选——不是 VS Code 坏了,是配置里埋了炸药。
重点检查并删除或注释掉以下字段:
-
python.defaultInterpreterPath和python.condaPath:绝对路径换机器必错,删掉或留空即可,插件会自动探测 -
files.exclude、search.exclude、terminal.integrated.profiles.windows等含C:\Users\、/Users/、/home/或平台专属键名的项 - 所有以
remote.、ssh.、wsl.开头的配置:远程开发环境无法跨机器复用
保留 editor.fontSize、workbench.colorTheme 这类通用设置即可。
keybindings.json 和 snippets/ 必须单独处理
Settings Sync 和 code --list-extensions 完全不碰快捷键和代码片段。漏掉 keybindings.json,你自定义的 Ctrl+Shift+P 行为、Emmet 缩写就全没了;漏掉 snippets/ 目录,所有语言模板(比如 vue 的 vue-sfc 片段)都不会加载。
它们路径固定,但极易被忽略:
-
keybindings.json:Windows 在%APPDATA%\Code\User\keybindings.json,macOS 在$HOME/Library/Application Support/Code/User/keybindings.json -
snippets/是整个目录,不是单个文件;里面每个*.json对应一种语言,少一个就少一堆模板 - 这两个文件支持热重载(改完保存即生效),但首次复制后仍建议重启一次确认加载无误
Profile 结构变了,别再全量覆盖 settings.json
VS Code 1.86+ 引入 Profile 后,settings.json 不再是扁平对象,而是嵌套结构,例如包含 "profiles": { "my-dev": { ... } }。直接覆盖会删掉 profiles 根节点,导致整个 Profile 失效,设置面板里 Profile 列表变空。
正确流程是:
- 在目标机先打开设置 → 配置文件 → 选中你要还原的 Profile(如
my-dev)→ 点击 “… → Reset Profile to Default” - 打开源机的
settings.json,找到对应 Profile 下的全部内容(比如"my-dev": { "editor.fontSize": 14, ... }) - 把这部分内容粘贴进目标机重置后的 Profile 设置区(不是整个
settings.json文件) - 改完必须完全退出 VS Code 再重启——
Developer: Reload Window不触发 Profile 重解析
Profile 名称、路径字段、UI 状态(如侧边栏展开项)这些细节,没有命令行能一键导出,靠的是人眼比对和手动清理。











