要让vscode启动时不自动打开上次项目,必须同时将window.restorewindows设为none并确保workbench.startupeditor为welcomepage;macos用户还需检查dock右键是否启用“在新窗口中打开”。

如何让VSCode启动时不自动打开上次项目
默认行为是恢复上一个窗口,但很多人其实只想看到干净的欢迎页。关键不是“关掉某个开关”,而是两个设置必须同时生效:
-
window.restoreWindows设为none:这是硬性拦截,设成all或folders都会触发恢复逻辑 -
workbench.startupEditor设为welcomePage:否则即使窗口空白,也可能跳到空编辑器或最近文件
单独改其中一个,大概率还是看到旧项目或一片空白。macOS 用户还要额外检查系统级设置——如果 Dock 右键菜单里勾了“在新窗口中打开”,VSCode 即使配置正确,双击图标仍会新建空白窗口而非复用。
如何让VSCode启动时自动打开指定项目
靠 GUI 设置基本不可靠,真正稳定的方式是组合三件事:配置 + 启动参数 + 工作区文件。
-
window.restoreWindows必须为all(不是folders),否则只恢复带文件夹的窗口,但不保证路径存在 - 用
code -r /path/to/project启动:路径必须是绝对路径,~/project会失败;Windows CMD 中建议用正斜杠./src,避免反斜杠转义问题 - 优先用
.code-workspace文件:双击它比code -r更容错,因为它自带路径解析和工作区元数据;若该文件被移动或删除,启动时会报Unable to open 'xxx.code-workspace': File not found.
注意:files.hotExit 要保持默认的 onExit,否则关窗口时状态根本没保存,下次自然恢复不了。
如何通过命令行参数临时覆盖启动行为
GUI 设置会被命令行参数覆盖,所以调试或脚本调用时,直接传参比改 settings.json 更确定。
-
code --disable-extensions:禁用所有扩展,排除插件干扰,适合排查启动卡顿 -
code --no-reopen-last --folder-uri file:///abs/path:强制加载指定路径,且不恢复任何上次状态,适合 CI 或多项目隔离场景 -
code --read-only /etc/hosts:只读打开关键系统文件,防止误操作,但保留高亮和跳转能力 -
code --user-data-dir="/tmp/vscode-test":启动完全隔离的实例,settings、扩展、历史全独立,适合测试配置变更
别试 --settings 或 --extensions-dir 来“换配置”——这些参数根本不存在或无效,code --help | grep settings 结果为空就是证据。
为什么 launch.json 的 args 不生效
这不是设置问题,是机制误解:args 只在 F5 调试时由调试器注入,和 VSCode 启动方式无关,但常被混为一谈。
-
args字段必须是字符串数组:["--input", "data.txt"]✅,不是"--input data.txt"❌ - 右键“Run Python File”或 Code Runner 插件完全不读
args,它们走的是python main.py直接执行流程 - 想让“Debug Python File”按钮带参,必须加
"purpose": ["debug-in-terminal"]且配置名严格为Python: Current File (Integrated Terminal) - 参数解析代码(如
argparse)必须包裹在if __name__ == "__main__":块内,否则模块导入阶段就报错
最容易忽略的一点:F5 启动前,左下角调试配置下拉菜单必须选对条目——VSCode 不会记住你上次选的是哪个,选错就等于没配。











