导出前必须清理绝对路径、平台专属、插件强依赖三类字段:如python.defaultInterpreterPath等含C:Users或/home/的路径需删除或替换;terminal.integrated.profiles.windows等Windows专用配置不可跨平台;prettier.bracketSpacing等插件配置须确保对应插件已安装。

导出前必须清理三类危险字段
直接复制 settings.json 看似简单,但跨机器导入后大概率静默失效——VSCode 不报错,只是跳过整行。真正起作用的只有三类字段:绝对路径、平台专属、插件强依赖。
-
绝对路径类:
python.defaultInterpreterPath、files.exclude、search.exclude中含C:Users、/home/、/Users/的值,必须删掉或替换成占位符(如"./python.exe") -
平台专属类:
terminal.integrated.profiles.windows、terminal.integrated.fontFamily(macOS/Linux 下可能阻断加载),Windows 专用配置不能出现在通用包里 -
插件强依赖类:
prettier.bracketSpacing、todo-tree.tree.showScanModeButton—— 新机器没装对应插件时,VSCode 直接忽略该行,导致格式化或树视图行为断裂
建议在 VSCode 里用 Ctrl+F 搜索 : " 后跟引号,逐行核对;也可用正则 "[^"]*?(C:\|/home/|/Users/|profiles.windows|fontFamily|prettier.|todo-tree.|eslint.|editorconfig.|markdown-pdf.)[^"]*?" 快速定位。
用 code --list-extensions 导出纯净插件清单
扩展面板里看到的“Python”“Prettier”只是显示名,安装依赖的是 ms-python.python 这类 publisher.name 格式 ID。截图、右键复制、手动拼写都容易出错,尤其含空格或 Unicode 的插件名。
- 在终端执行
code --list-extensions > extensions.txt,输出纯文本、无 BOM、无版本号,适合 Git 提交 - 禁用插件默认不出现——这是设计行为,重装时本就不需要它们;若需保留禁用状态,得另建
.vscode/extensions-disabled.json手动管理 - 中文界面必须显式加语言包:
MS-CEINTL.vscode-language-pack-zh-hans,它不会出现在code --list-extensions输出里,要手动追加到extensions.txt最后一行 - Windows 下若提示
command not found,先在 VSCode 命令面板运行Shell Command: Install 'code' command in PATH
分层导出 keybindings.json 和 snippets
快捷键不是“导出文件就完事”。直接复制 keybindings.json 容易因 when 条件不匹配、扩展未安装、平台键名差异而失效。
- 只从命令面板(
Ctrl+Shift+P)执行Preferences: Open Keyboard Shortcuts (JSON)获取用户自定义部分,确保是合法 JSON 数组格式,如[{"key":"ctrl+alt+l","command":"editor.action.formatDocument","when":"editorTextFocus"}] - 检查
when字段依赖的扩展是否已在extensions.txt中列出,例如gitlens:fileBlameActive需eamodio.gitlens,notebookEditorFocused需ms-toolsai.jupyter - 跨平台共享时避免硬写
ctrl:macOS 上多数场景需cmd,VSCode 不自动转换;推荐优先使用workbench.action.**类命令(自带映射),或用条件分支写两套:"when":"isMac"和"when":"!isMac" - 代码片段(snippets)需单独复制
.vscode/snippets/目录,注意路径中不能含绝对路径引用,且 JSON 文件名应与语言 ID 一致(如javascript.json对应javascript语言模式)
导入后必须彻底退出 VSCode 才生效
很多人导入配置后发现没变化,不是配置错了,而是 VSCode 还在后台运行残留进程。VSCode 的配置加载是启动时一次性解析,Developer: Reload Window 不会重新读取 settings.json 或 keybindings.json。
- 导入前,先在任务管理器(Windows)、活动监视器(macOS)或
ps aux | grep code(Linux)中确认没有Code Helper、Code Helper (Renderer)等残留进程 - 导入方式推荐:覆盖
.vscode/settings.json(工作区级)和%APPDATA%CodeUsersettings.json(用户级)时,先删原文件再粘贴,避免编辑器写入 BOM 或换行符导致解析失败 - 如果启用了 Profile(VSCode 1.86+),不要直接覆盖整个
settings.json;应进入设置 → Profiles → 选中目标 Profile →Reset Profile to Default,再把源机对应 Profile 下的内容粘贴进去 - 导入
extensions.txt后,在终端执行cat extensions.txt | xargs -L 1 code --install-extension,比 UI 点击更可靠;安装完务必彻底退出 VSCode 再重启
最常被忽略的是 Profile 重置和后台进程清理——这两步不做,哪怕配置文件一字不差,也大概率白忙一场。


















