VSCode 无默认窗口大小配置,依赖关闭时状态记忆,但多显示器、缩放变化或插件干扰会导致启动位置/尺寸异常;强制固定需用命令行参数(如 --window-size)并配置 "window.restoreFullscreen": false 和 "window.newWindowDimensions": "default"。

VSCode 没有“默认窗口大小”的全局配置项,它的尺寸和位置是靠「上次关闭时的状态」来记忆的;但这个记忆机制在多显示器、缩放变化或插件干扰下容易失效,导致每次启动都跑到屏幕外、过小或非预期位置。
为什么 VSCode 启动后窗口总不在主屏或尺寸不对
根本原因是 VSCode 会把窗口最后关闭时的 x、y 坐标和 width、height 写入本地状态文件(不是 settings.json),下次启动直接读取还原。问题常出现在:
- 上次关机前窗口在已断开的外接显示器上,重启后坐标仍指向那块“消失”的屏
- 系统缩放比例变更(如从 125% 改为 100%),旧坐标被按新 DPI 解析,导致窗口偏移或缩成一团
- 某些插件(尤其是 UI 增强类)会劫持窗口管理逻辑,覆盖默认恢复行为
-
window.newWindowDimensions被设为fullscreen或maximized,但系统级全屏策略不一致(比如 Wayland 下行为异常)
如何强制 VSCode 启动时用固定尺寸和位置
唯一稳定生效的方式是绕过状态记忆,改用命令行参数启动,并配合配置项锁定行为:
- 关闭所有 VSCode 实例,确保无后台进程残留
- 用终端启动并指定尺寸:
code --new-window --window-size=1200,800 --window-position=100,50(宽1200×高800,左上角距主屏左边缘100px、上边缘50px) - 把这个命令保存为桌面快捷方式或 shell 别名,日常就点它开
- 同时在
settings.json中加两行防干扰:"window.restoreFullscreen": false和"window.newWindowDimensions": "default" - 如果必须用 Dock/Launcher 启动,可编辑桌面文件(Linux)或 Automator 脚本(macOS)包装上述命令
“Window: Reset Window Size” 命令为什么有时没用
这个命令(Ctrl+Shift+P → 输入 Window: Reset Window Size)只重置当前窗口尺寸,不修改位置,也不清除跨会话的状态缓存。常见失效场景包括:
- 窗口当前处于全屏状态:命令对全屏窗口无效,需先退出全屏(
F11)再执行 - 多工作区打开时:它只作用于当前活动工作区,其他工作区仍保持旧状态
- 状态文件损坏:VSCode 的
workspaceStorage或user-data目录里缓存了错误坐标,此时需手动删掉Window相关的 JSON 文件(路径因系统而异,Linux 在~/.config/Code/Backups/下) - 远程开发(SSH/WSL)场景:窗口位置由本地 VSCode Client 决定,但尺寸记忆可能被 remote server 端状态干扰,建议在 remote 环境中也执行一次重置
多显示器用户最该盯住的三个配置项
如果你经常插拔显示器或混用不同 DPI 屏幕,这三个键值必须显式设置,否则 window.zoomLevel 再准也没用:
-
"window.zoomLevel": 0—— 避免缩放叠加导致 UI 模糊或错位 -
"window.restoreFullscreen": false—— 全屏恢复逻辑在多屏下极不可靠,关掉更可控 -
"window.newWindowDimensions": "default"—— 强制每次新开窗口都走默认逻辑,不继承上次坐标
注意:这些配置写在用户级 settings.json 才生效,工作区级设置会被忽略;改完务必完全退出 VSCode(包括右下角托盘进程),再重启。


















