关掉 extensions.autoUpdate 是第一件事,因为 VS Code 默认自动更新插件可能引入破坏性变更,如快捷键冲突、格式化规则更改或调试异常;应在 settings.json 中设为 false,并对关键插件单独禁用自动更新。

为什么关掉 extensions.autoUpdate 是第一件事
VS Code 默认开启自动更新,但新版插件可能破坏快捷键、格式化规则或调试流程——比如 ms-python.python v2026.6 升级后突然不识别 venv 路径,esbenp.prettier-vscode v10.0.0 改了 prettier.printWidth 默认值。这不是 bug,是 breaking change。你不需要“禁用所有更新”,而是要掌控节奏。
- 在
settings.json里加一行:"extensions.autoUpdate": false,比设置界面勾选更可靠(尤其跨设备同步时) - 别只关全局开关:对关键插件如
redhat.vscode-yaml或bradlc.vscode-tailwindcss,进扩展详情页 → 点齿轮图标 → 关掉 “Auto Update”,锁定版本 -
--disable-extension-updates启动参数适合临时离线开发,但每次都要输命令,不如配置固化
备份插件列表 ≠ 备份插件本身
Settings Sync 默认不同步插件,即使你开了“同步扩展”,它也只上传 extensions.json(即插件 ID 列表),不存版本号、不存本地缓存、不存 .vscode/extensions/ 下的二进制文件。新电脑下载后,VS Code 会拉取每个插件的最新版——哪怕你原机器上用的是稳定旧版。
- 手动导出真实插件文件:关掉 VS Code,复制整个
~/.vscode/extensions(macOS/Linux)或C:\Users\<username>\.vscode\extensions</username>(Windows)目录,压缩存档 - 命令行备份 ID 列表更轻量:
code --list-extensions > extensions-list.txt,重装时用xargs -n1 code --install-extension - 注意
extensions.json里没记录禁用状态,所以导出前先确认哪些插件是 disabled——否则同步后全变成 enabled
Local History 插件不是备份,但它能救你一命
很多人误以为 Local History 是“自动备份插件”,其实它只管源码文件:每次保存前,在项目根目录下 .history/ 里存一个时间戳副本。它和插件无关,但能防手抖删错、改崩逻辑、误覆盖等“人祸”。
- 安装后默认生效,无需配置;想留 30 天快照,设
"local-history.maxFileHistory": 30 - 只记录已打开的文件——没点开的
utils.py就算改了也不会存 - 右键文件 →
Local History: Show History,对比时左侧是当前,右侧是快照,恢复就是一键覆盖 - 它不替代 Git,但比 Git 更细粒度:Git 提交是人工触发,Local History 是每次保存就存,连 Ctrl+S 都算
同步到新电脑后最常失效的三样东西
Settings Sync 或手动迁移后,看似插件都装上了,但实际运行时经常卡在某个环节——问题不在“有没有”,而在“能不能用”。
-
python.defaultInterpreterPath这种绝对路径配置,Windows 上的C:\Python39\python.exe同步到 macOS 就直接失效,Python 插件报“no interpreter found”,得手动重选 - 插件的本地依赖没同步:比如
rust-lang.rust需要本地装rustc,ms-vscode.cpptools需要clang,这些不会随插件一起装 -
.vscode/settings.json(工作区配置)默认不同步,只同步全局~/Library/Application Support/Code/User/settings.json;项目级缩进、EOL 设置丢了就得重新配
真正麻烦的不是“怎么装上”,而是“装上之后哪些路径、依赖、工作区设置悄悄断了”。每次同步完,至少打开一个真实项目跑一次调试、格式化、跳转定义,才能确认是否真可用。


















