
用了这么多年VSCode每隔一段时间就有人来问我同一个问题每次启动编辑器它总爱自作主张打开一堆东西——要么弹欢迎页要么把上次没关的窗口和文件全给恢复出来烦不胜烦。今天把“VSCode自动打开窗口如何关闭”这件事彻底说透从原理到实操一条龙看完你就能按自己的习惯调教好这个编辑器。先说清楚这个问题没有唯一答案因为“自动打开窗口”在不同人嘴里指的可能不是同一件事。有人烦的是启动时恢复历史会话有人烦的是欢迎页每次都冒出来还有人烦的是双击文件总是新开一个窗口。我先带你对号入座再逐个给方案顺便把那些让人摸不着头脑的设置项讲明白。1. 先弄清“自动打开窗口”到底是哪一类问题1.1 五种最常见的“自动打开”场景我做技术支持这些年总结下来大家说的“VSCode自动打开窗口”命中率最高的基本是下面这五种场景一启动时弹出欢迎页。装好VSCode第一次打开那个“Welcome”标签页就跳出来了关掉之后下次启动又出现。新手会觉得这是“广告”老手虽然知道不是但也觉得碍眼。场景二启动时自动恢复上次的窗口和文件夹。比如昨晚你开着某个项目关掉了编辑器今天双击VSCode图标它直接把你昨晚的项目文件夹和里面的文件全打开了甚至开了好几个窗口的都给你一个个恢复出来。场景三启动时标签页全回来了。和场景二很像但更精确地说是你上次没保存的、或者压根没手动关掉的标签页重新启动后原封不动躺在编辑器里连光标位置都差不多。场景四从文件管理器双击文件总是新开一个VSCode窗口。你在文件夹里点开一个.txt或.py文件VSCode不是在你已经开着的窗口里打开它而是又弹出一个全新的窗口窗口越开越多。场景五打开VSCode后终端/输出面板自动弹出来。尤其装了一些插件或者上次退出时终端面板还开着的情况重启之后终端自动占据半个编辑器看着就头大。这五种场景对应的是不同的设置项混在一起解决是搞不定的。1.2 先判断你遇到的是哪种情况动手之前花十秒钟判断一下具体现象可以少走很多弯路。下面这张表是我常用的“对号入座”参考你看到的现象元凶设置项优先级启动必弹欢迎页workbench.startupEditor高启动自动恢复多个窗口/文件夹window.restoreWindows高启动自动恢复一堆标签页files.hotExit高双击文件总是新开一整个窗口window.openFilesInNewWindow中打开后终端/面板自动弹出插件或上次会话面板状态低提示如果你的“自动打开窗口”指的是“鼠标悬停到代码上就自动弹出解释小框”这类东西那其实不是窗口而是编辑器自带的气泡提示对应的设置是editor.hover.enabled想关的话在后面排查部分我也会提一下。判断清楚了接下来我逐个讲透这些设置项的原理和配置方法。2. 三个关键设置项逐个讲透原理2.1 window.restoreWindows管窗口恢复这个设置项决定的是VSCode启动时要不要把上次关闭时还开着的“窗口”恢复回来。什么是“窗口”举例子你上次用VSCode同时开着项目A和项目B两个窗口。关掉编辑器后下次再启动VSCode默认会把这两个窗口原样拉起来让你快速接着干活。默认值是all也就是“恢复上次会话中的全部窗口”。这个设计初衷很简单很多开发者每天的工作流是“开机→打开VSCode→接着昨天没写完的代码继续”恢复到上次的工作现场能省不少时间。问题是有些人不喜欢这种“被恢复”的感觉。比如你只是临时看一眼代码或者电脑借给同事用过一开编辑器满屏都是别人的窗口隐私和体验都很糟糕。改成none之后每次启动都是干净的空窗口自己想去哪儿打开哪儿。中间选项one只恢复最近使用的一个窗口适合那些“每次只想接着一个项目干、但不想看到一堆窗口”的人。我个人的建议是如果你不想被自动恢复打扰直接选none。因为大多数人平时打开项目都是通过最近列表或者文件关联恢复窗口带来的便利其实没有想象中那么大反而容易造成“开了一堆窗口看花眼”的混乱。2.2 workbench.startupEditor管启动时显示什么这个设置项英文叫workbench.startupEditor中文界面里显示为“启动时打开编辑器”它决定VSCode启动后主编辑区域显示什么东西。默认值是welcomePage即欢迎页。这就是为什么你装完VSCode第一次打开总是先看到那个带有“Start”“Recent”“Walkthroughs”的欢迎标签页。它相当于编辑器的“首页”对新手友好但对老手就是纯粹的噪音。如果你想彻底不看欢迎页有两个方向一个方向是设成none启动后打开一个空白窗口不显示任何额外页面。这个“None”选项的描述就是“启动时不打开任何内容空白编辑器”。注意这里说的“空白窗口”指的是没有标签页、没有欢迎页的空编辑器不是没有窗口。另一个方向是设成newUntitledFile启动后自动新建一个未命名的空文件方便有“随手记笔记”习惯的人直接开写。还有几个选项比如readme打开文件夹时自动打开README、welcomePageInEmptyWorkbench只在空工作区时显示欢迎页实际使用频率不高了解一下就行。提示如果你设置了workbench.startupEditor: none但还是偶尔看到欢迎页多半是某个插件主动调用了欢迎页或者你用了快捷键/命令面板手动打开过。纯启动流程不会再有欢迎页了。2.3 别忘了 openFilesInNewWindow 和 hotExit讲完上面两个主菜还有两道配菜。window.openFilesInNewWindow控制的是“从系统文件管理器双击打开文件时VSCode应该用当前窗口显示还是另开一个新窗口”。默认值是default具体行为跟随操作系统——在Windows上双击一个由VSCode关联的文件类型默认倾向于新开一个窗口。这个默认行为挺坑的。你明明已经开着VSCode去文件夹里双击一个图片或文本文件“啪”地又弹出一个完全独立的窗口两个窗口都得管很割裂。改成off所有文件都在当前已有的窗口里打开窗口数量终于可控了。files.hotExit是很多人容易忽略的它管的是“热退出”。热退出指的是——你关掉VSCode时哪怕有些文件还没保存VSCode也会记住这些文件以及你未保存的更改下次启动时原样恢复。默认值为onExit意思是“当应用退出时记住未保存的更改”。所以很多人会发现我明明没点保存怎么一打开VSCode昨天改了一半的内容全在这就是hotExit在起作用。如果你希望每次启动都是完完全全的新状态把files.hotExit设为off即可。设成off后关闭VSCode时如果还有未保存内容它会主动弹确认框让你处理不再“偷偷”记住你的草稿。这两个设置项一个管“新窗口”一个管“草稿恢复”和前面讲的restoreWindows组合起来就是完整的“启动行为”控制组合拳。3. 实操配置图形界面与settings.json两条路线3.1 通过设置面板一步步操作如果你不想碰配置文件图形界面最快。按Ctrl ,Windows/Linux或者按Cmd ,macOS直接打开设置面板。在顶部的搜索框里输入关键词比如想关欢迎页就搜startupEditor界面会实时过滤。找到对应设置项后直接把下拉选项改成你要的值就行。改完不用保存VSCode会自动生效。我建议改完顺手看一眼右侧的“设置/用户设置”区域确认没有被工作区级设置覆盖关于这个问题下一节会详细讲。图形界面的好处是直观不会写配置也能操作。坏处是搜索太多的时候结果杂乱有时候你搜一个词底下冒出好几个看似相关的设置容易改错。我的习惯是搜英文关键词而不是中文比如搜restoreWindows而不是“恢复窗口”匹配更准。3.2 直接改settings.json一步到位图形界面适合单点修改但我更推荐你直接编辑settings.json。原因很简单一打开文件你就能看到所有改过的设置项一目了然方便统一管理也方便以后换电脑直接复制。打开方法按Ctrl Shift P打开命令面板输入open user settings json选中带“Open User Settings (JSON)”的那一项回车。然后在JSON文件的大括号里加上这么几行{ window.restoreWindows: none, workbench.startupEditor: none, files.hotExit: off, window.openFilesInNewWindow: off }逐行说明一下window.restoreWindows: none每次启动不恢复任何历史窗口从空白开始。workbench.startupEditor: none启动后编辑区域不显示欢迎页直接显示空状态。files.hotExit: off关闭热退出未保存的草稿不会被自动恢复。window.openFilesInNewWindow: off双击外部文件时在当前窗口打开不新开窗口。保存后立即生效大多数情况下连编辑器都不需要重启。如果你发现保存JSON后没有任何变化检查一下是不是改成了“远程SSH设置”或者“工作区设置”里的JSON不是用户级的settings.json。3.3 关于标签页恢复我给你一个实用建议前面我把files.hotExit讲得很绝对但实际使用中我建议你留个心眼别一刀切设成off。为什么因为热退出功能其实是个“防丢草稿”的保险。我见过太多人写着写着代码突然断电、电脑崩溃重启重启后打开VSCode发现没保存的几十行代码全没了欲哭无泪。VSCode默认开启热退出就是为这种极端情况兜底的。所以我的建议是分人分场景如果你是“强迫症洁净派”受不了启动时一堆旧文件回来那files.hotExit: off没毛病。代价是你要养成随手保存的习惯不然一关窗口半小时的修改就没了。如果你是“实用至上派”更在乎“别丢东西”那我建议保留热退出只把window.restoreWindows改成none。这样启动时不会恢复一堆窗口但如果你上次干活干到一半被迫关掉那些未保存的文件还能找回来。我自己的配置是“折中模式”restoreWindows设nonestartupEditor设nonehotExit保持默认onExitopenFilesInNewWindow设off。结果就是每天打开是干净的空窗口真遇到突然断电未保存的内容依然能恢复回来。注意如果你关闭VSCode时当前窗口开着很多文件且都不想恢复直接手动一个个关掉标签页再退出VSCode对“上次主动关闭的标签页”是不会恢复的。热退出恢复的只是“非主动关闭”的会话。4. 常见问题与排查技巧实录4.1 改了设置却“失效”的几种可能不少人在网上看教程改了设置结果发现没作用然后就怀疑教程错了。其实多半是下面几个原因。第一改错配置文件。VSCode里有三级配置默认配置、用户配置、工作区配置。工作区配置的优先级最高如果你在某个项目里设置了工作区级的settings.json它会盖掉你的用户设置。检查方法看设置面板里“工作区”标签下有没有标蓝的覆盖项或者打开当前项目的.vscode/settings.json看看有没有相关设置。第二改了但没重启VSCode。大部分设置是热生效的但有些涉及窗口管理、启动流程的设置不改也得关掉编辑器重新打开才看得出来。尤其你改完立刻“再启动”测试窗口还没完全退出就被拉起来自然看到的是旧状态。第三把“启动时自动恢复”和“手动打开最近文件夹”搞混了。你改完restoreWindows后如果还是从欢迎页的“Recent”列表点进去那当然会打开上次的项目这是你自己手动触发的跟自动恢复没关系。第四终端/面板自动弹出其实是插件干的。常见的是任务管理器插件、Git插件、Live Server这类带“自动启动”能力的扩展。特别是你上次退出时终端窗口开着它被当成界面状态的一部分一起记住了恢复窗口时终端也跟着出来。4.2 插件导致的自动打开问题这里单独说插件因为太容易被忽略。我踩过一个坑装了某个代码格式化插件后每次启动VSCode都会自动弹出一个“Formater Config”的侧边栏面板烦了好几天最后禁用插件才好。如果你把所有启动项设置都改了还是有莫名的窗口/面板自动打开直接走“二分法”打开扩展面板先禁用最近安装的那批插件逐个重启测试大概率能找到凶手。另外还有一个常见的“VSCode不能主动打开谷歌浏览器”的情况其实也跟插件相关比如某些HTML预览插件会在启动时尝试调用外部浏览器。这种“自动打开外部程序”的行为不是VSCode核心设置能控制的要去插件的配置里找autoOpen、onStartup之类的选项关掉。还有一个容易被当成“自动打开窗口”的场景鼠标悬停在代码上时总弹出一个解释信息框。这个叫“Hover提示”对应的核心设置是editor.hover.enabled。实测下来对于不想被干扰的人在settings.json里加一行editor.hover.enabled: false就安静了。提示如果希望最小化排查范围可以临时用code --disable-extensions命令启动VSCode或者用“命令行参数启动”的方式如果这样启动后没有自动打开的窗口那基本坐实是插件的问题。4.3 直接照抄的速查配置表最后放一张速查表你可以按实际需求直接抄。你想要的启动效果需要设置的项和值备注启动时不要欢迎页workbench.startupEditor: none想空文件就设newUntitledFile启动时不要恢复历史窗口window.restoreWindows: none想只恢复最近一个就设one启动时不要恢复未保存标签页files.hotExit: off注意这个会失去草稿保护双击文件不要新开窗口window.openFilesInNewWindow: off老窗口直接打开鼠标悬停不要自动弹解释框editor.hover.enabled: false这是悬浮提示不是窗口这样一份组合配置下来基本可以满足“开机只看到干净的VSCode”的诉求了。我个人在实际操作中的体会是VSCode的默认设置本身没有对错它是照着“连续性”“效率优先”的逻辑设计的——假设你是个每天要在多个项目里来回切换的开发者恢复窗口能省不少重新打开项目的时间。但如果你和我一样更享受“从干净环境开始每一天”的控制感那建议一定先把这篇文章里的几个选项挨个试一遍再决定哪些保留、哪些关掉而不是无脑全按我的来。另外说一个小技巧如果你只是偶尔不想恢复某个特定窗口不用改配置退出前把那几个标签页全关掉再退出VSCode就行了下次启动一样干净。配置这个东西最适合自己的才是最好的。