离线迁移VSCode配置需分三类处理:插件用code --list-extensions导出ID并--install-extension安装;用户设置需清理settings.json中绝对路径;快捷键和代码片段须手动复制对应JSON文件。

离线迁移 VSCode 配置不是“复制粘贴就能用”,必须分三类处理:插件列表靠 code --list-extensions 导出 ID,用户设置靠手动清理 settings.json 中的绝对路径,快捷键和代码片段只能直接复制对应 JSON 文件——混用任何一种“全量拷贝文件夹”方式都会在新机器上失效。
导出已启用插件 ID 列表(不能截图、不能抄市场名)
扩展市场里显示的“Python”“Prettier”只是别名,真实安装用的是 ID,比如 ms-python.python。用别名安装会报错 Extension 'Python' not found in the marketplace。
- 在旧电脑终端运行:
code --list-extensions --show-versions > extensions.txt,生成带版本号的 ID 列表(如ms-python.python@2024.12.1) - 注意:Windows CMD 下若提示
command not found,先确认是否执行过Shell Command: Install 'code' command in PATH - 文件必须保存为 UTF-8 编码(尤其含中文插件名时),PowerShell 比 CMD 更稳,避免重定向写成
>>导致追加混乱 -
--show-versions是为了记录兼容性依据,但安装时只取@前部分;code --install-extension ms-python.python才有效,带@会失败
导出并清理 settings.json(绝对路径是最大雷区)
直接复制 settings.json 到新机常导致 Python 插件找不到解释器、文件排除规则失效、终端启动失败——因为里面混着 C:\Users\xxx\... 或 /home/xxx/... 这类路径。
- 打开命令面板,运行
Preferences: Open Settings (JSON),复制全部内容,保存为settings.json - 逐行检查字段:删掉或注释掉所有含绝对路径的项,例如
python.defaultInterpreterPath、terminal.integrated.env.linux、files.exclude中的本地路径 - VSCode 1.86+ 启用 Profile 后,
settings.json结构变为嵌套,直接覆盖会破坏profiles根对象;正确做法是先在新机重置目标 Profile,再把源机对应 profile 块(如"my-dev": { ... })粘贴进去 - 保存后务必退出 VSCode 全进程(任务管理器里确认无残留
Code Helper),再覆盖新机的settings.json
快捷键和代码片段必须手动复制文件(Settings Sync 和拖拽都不可靠)
快捷键不走插件机制,也不进 Settings Sync 的上传范围;代码片段更不是插件,没有 .vsix 包,无法用命令行“安装”。
-
keybindings.json路径:- Windows:
%APPDATA%\Code\User\keybindings.json - macOS:
~/Library/Application Support/Code/User/keybindings.json - Linux:
~/.config/Code/User/keybindings.json
- Windows:
- 代码片段路径:
- 全局片段:Windows 是
%USERPROFILE%\AppData\Roaming\Code\User\snippets\,Linux/macOS 是~/.vscode/snippets/ - 语言专属片段命名必须规范,如
javascript.code-snippets;项目级片段放.vscode/snippets/(需手动创建目录)
- 全局片段:Windows 是
- 改完
keybindings.json或 snippets 文件后无需重启,但必须确保文件编码为 UTF-8、JSON 格式合法(VSCode 设置页会提示语法错误)
离线安装插件时卡住或静默失败的真实原因
code --install-extension 默认联网校验签名、检查更新,网络不通就卡住;更隐蔽的是 native 插件(如 ms-vscode.cpptools)加载失败却只显示 Installation completed。
- 必须加
--force跳过“已存在”提示,否则重复安装会冲突 - Linux/macOS 推荐加
timeout 120控制单个安装时长:while read ext; do timeout 120 code --install-extension "$ext" --force; done - Windows PowerShell 可用:
Get-Content extensions.txt | ForEach-Object { code --install-extension $_ --force },但需提前关闭extensions.autoCheckUpdates - 含 native 二进制的插件要求目标机 Node.js 版本匹配 VSCode 内置版本(查
code --version和package.json中engines.vscode字段) - 安装后务必重启 VSCode —— 语言服务器类插件不重启不会激活
最易被忽略的一点:插件 ID 列表导出后,很多人直接拿 extensions.txt 在新机执行批量安装,却忘了检查 VSCode 主版本号是否一致(比如 1.92.x 和 1.93.x 可能导致某些插件行为突变),也忘了确认 code 命令是否指向当前安装的 VSCode 实例(尤其当系统里存在多个版本时)。











