files.autosave 设为 "onfocuschange" 可实现切窗口自动保存,即编辑器失去焦点时立即保存已命名文件,但不适用于未保存的临时文件或只读文件。

files.autoSave 设为 "onFocusChange" 才能切窗口自动保存
VSCode 没有“切换窗口时自动保存”的独立开关,但 files.autoSave 设为 "onFocusChange" 就是你要的行为:编辑器失去焦点(比如你点到浏览器、终端或另一个应用)时立即保存当前文件。
常见踩坑点:
-
"onFocusChange"大小写敏感,写成"onfocuschange"或"onWindowChange"(已废弃)都不生效 - 只对已保存的文件生效;
Untitled-1这类未命名临时文件不会落盘 - 若同时启用了
editor.formatOnSave,而格式化失败(如 Prettier 缺失),保存会被静默中止 - 文件为只读(权限不足、被其他进程占用)时,VSCode 不报错也不提示,保存直接失败
explorer.autoReveal 控制资源管理器是否自动定位当前文件
设为 true 后,每次切换编辑器标签,资源管理器会自动展开路径并高亮对应文件——但这不是“聚焦编辑器”,而是让侧边栏“跟上你”。
为什么开了没反应?重点检查:
- 当前文件是否已保存:未保存的
Untitled-1没有磁盘路径,无法定位 - 资源管理器是否被关闭:侧边栏收起或点击 × 隐藏后,该功能无作用对象
- 工作区设置覆盖:检查
.vscode/settings.json是否显式写了"explorer.autoReveal": false - 大项目卡顿:含大量文件(如未忽略
node_modules)时,自动展开可能延迟甚至假死,建议改用快捷键Alt+Shift+R按需触发
workbench.action.focusActiveEditorGroup 是切回编辑器最稳的命令
无论焦点卡在终端、搜索面板、Git 提交框还是问题视图,绑定 workbench.action.focusActiveEditorGroup 到快捷键(如 Ctrl+J 或 Ctrl+1),就能秒级回到代码区。
注意实际行为差异:
-
Ctrl+1强制跳转到第一个编辑器组,不依赖当前状态,适合多数人 -
Ctrl+`(反引号)是隐藏/显示终端的快捷键,但它附带一个副作用:终端隐藏时,焦点自动回落至上一个编辑器组——可当备用路径 - 如果开了多个分屏(
Ctrl+\创建的 Editor Group),Ctrl+2/Ctrl+3可切对应组,但前提是它们存在且可见 - macOS 用户需留意
Cmd+1可能与系统 Mission Control 冲突,建议在系统设置中检查
workbench.action.terminal.focus 绑定快捷键后仍不聚焦?先看前提条件
这个命令(推荐绑 Ctrl+K)只负责把焦点移向终端面板,但它不会启动终端、也不会创建新终端。
必须满足以下条件才有效:
- 终端面板已打开:按
Ctrl+`确保它处于可见状态;如果已被关闭,Ctrl+K无响应 - 不要和 Python 扩展(如 Pylance)或其他终端插件的快捷键冲突,可在快捷键面板顶部查看
Conflicts提示 - 远程开发(SSH/WSL)下,终端焦点事件可能因系统层限制而延迟或丢失,此时可改用
Terminal: Create New Terminal(默认Ctrl+Shift+`)再手动聚焦 - Windows 用户若用 PowerShell 或 CMD 作为默认终端,确认
"terminal.integrated.defaultProfile.windows"设置正确,否则可能启动空白面板
真正容易被忽略的是:所有这些焦点控制都依赖「当前上下文是否具备目标面板」。比如 explorer.autoReveal 在资源管理器关闭时毫无意义,workbench.action.terminal.focus 在终端未启用时形同虚设——它们不是魔法,只是精准触发已有组件的行为。配置前先手动操作一遍流程,比盲目改 JSON 更快定位问题。











