VS Code1.134终于学会了Jetbrains这个丝滑动作 📅 发布时间:2026/8/24 14:19:02 👁 浏览次数: 按住 Alt 键再点×所有其他标签页瞬间消失——这个功能是怎么被“逼”出来的如果你用过 JetBrains 家的 IDE比如 IntelliJ IDEA你可能已经条件反射地按住 Alt 键去点标签页的 × 了——因为你知道这么一点除了当前这个标签页其他的统统关闭。如果你没用过你可能在想“这不就是个快捷键吗有啥好大惊小怪的”VS Code 的工程师们一开始也是这么想的。直到他们开始做这个功能才发现事情远没有想象中那么简单。这个故事的开头用户想要一个“顺手”的功能事情要从一个用户反馈说起。有人提了个 Issue 说“能不能像 JetBrains 那样Alt点击关闭按钮把其他标签页都关了我每天都要手动一个个点×太费手指了。”VS Code 团队一看觉得挺合理。实现起来应该也不难——监听 Alt 键然后关闭其他标签页完事。但真正开始做之后他们才发现自己打开了一个“潘多拉的魔盒”。第一个坑UI 反馈 — 用户不知道自己在做什么如果只是加一个 Alt点击的隐藏快捷键问题很大用户可能不小心按到 Alt 然后点了关闭所有标签页突然消失然后一脸懵逼“我刚才做了什么”所以必须要有视觉反馈——当用户按住 Alt 时关闭图标要变成一个不同的图标比如一个“关闭所有其他”的样式让用户清楚地知道“哦我按了 Alt现在点击会触发特殊操作。”这还不够还要加 tooltip 提示“关闭其他标签页 (AltClick)”——不然用户根本不知道这个功能的存在。在vscode是叫Close others到此为止vscode这个新特性虽然是学jetbrains的但是已经有不同的感觉因为idea的设计只包含了tooltip但是说实话vscode增加切换标签来表示和关闭单个标签的不同我是真的无法从直观的感觉这个标签可以表达关闭其他tab的意思。第二个坑固定标签页Sticky TabsVS Code 有“固定标签页”Sticky Tabs的功能这些标签页是“钉住”的用户希望它们一直保留。Alt点击关闭其他标签页时不应该把固定标签页也关了——否则用户会暴怒。所以代码里必须过滤掉固定标签页只关闭非固定的。第三个坑匹配逻辑matches()的陷阱这个是最大的坑。VS Code 里有些特殊的编辑器标签页比如 Welcome 页面、Walkthrough 教程它们重写了matches()方法只要类型相同就认为它们“匹配”——这本来是为了实现“单例”效果比如 Welcome 页面只能有一个。问题是如果同时有两个这样的“单例”标签页被打开虽然理论上不应该但用户总有办法搞出各种状况Alt点击关闭其他时VS Code 可能会把本来不该关的那个也关上或者把当前这个错误地当成另一个而关掉。解决方案是不用matches()来判断是否“相同”而是直接用引用对比reference identity——也就是“这个标签页是不是就是当前这个而不是跟它长得像的另一个”。所以为什么要有这个功能从用户角度看这个功能很直观按住 Alt 点 ×其他标签页全关掉——省时省力手指少受罪。从团队角度看这个功能的核心价值在于提升标签页管理效率。对于经常打开大量标签页的用户来说这比手动逐个关闭要快得多。但真正让人印象深刻的不是这个功能本身有多“大”而是 VS Code 团队在处理这个“看起来很简单”的功能时考虑到了固定标签页不能动视觉反馈要让用户明白当前状态matches()的特殊性不能影响关闭逻辑点击事件的顺序不能被误触发最后一个有意思的细节这个功能的图标设计参考了 JetBrains 的风格——当你按住 Alt 时关闭图标会变成“关闭其他”的样式。如果你不按 Alt图标就是普通的 ×点击就只关当前这一个。这种“所见即所得”的设计让这个功能既容易发现又不容易误触。现在它已经合入主分支你可以在下一个 VS Code 版本中体验它了——如果你用的是 Insiders 版本现在已经能用上了。