Ctrl+Shift+[(Win/Linux)或 Cmd+Shift+[(macOS)可一键收起资源管理器中所有已手动展开的文件夹,不影响未展开目录和编辑器标签页。

资源管理器里怎么一键收起所有已展开的文件夹
直接按 Ctrl+Shift+[(Windows/Linux)或 Cmd+Shift+[(macOS),就能收起资源管理器中所有「当前已展开」的文件夹。它只作用于你手动点开过的层级,不会动未展开的父目录,也不影响编辑器标签页。
常见错误现象:Ctrl+B 是整个侧边栏显隐(含搜索、Git 等),不是“收起文件夹”;Ctrl+K Ctrl+0 是编辑器内代码折叠,对资源管理器完全无效。
- 如果按了没反应,大概率是你刚打开 VSCode,资源管理器本来就是收起状态——这正常,不是快捷键失效
- 1.80 版本后,
Alt+Click文件夹箭头默认被禁用;如需恢复,得在settings.json里加"explorer.altClickToCollapse": true - 这个操作不保存状态:重启 VSCode 后,上次展开的文件夹仍会按默认逻辑自动展开(受
explorer.autoReveal控制)
编辑器里怎么折叠/展开全部代码块
Ctrl+K Ctrl+0(Win/Linux)或 Cmd+K Cmd+0(macOS)是真正“折叠全部”的快捷键,它基于语言服务提供的折叠范围(folding ranges),递归收起函数、类、if 块、#region 等所有可折叠单元。
注意:Ctrl+Shift+[ 不是“折叠全部”,它只折叠光标所在位置最近的一个可折叠结构(比如一个 if 块),且必须落在有语法意义的行上(如 function 或 { 所在行)。
- 折叠后,左侧行号区出现小三角;悬停可预览内容,前提是启用了
editor.showFoldingControls: "always" - 如果某段代码折不动,先确认右下角语言模式是否正确(比如 .ts 文件不能识别为 plaintext),再检查
editor.foldingStrategy是否为"auto" - Python 默认靠缩进折叠,但
foldingStrategy: "indentation"可能导致单行if被误判为独立块;JSX 需要插件支持才能折叠花括号内表达式
为什么有些文件夹或代码块就是不响应折叠
核心原因不是快捷键错了,而是 VSCode 的折叠行为分属两个互不干扰的系统:资源管理器折叠靠 UI 状态控制,代码折叠靠语言服务提供结构信息。两者底层机制不同,不能互相替代。
典型干扰项:
-
explorer.autoReveal: true(默认开启):当你在编辑器中打开某个文件,VSCode 会自动展开其所在路径——这不是 bug,是设计行为;关掉它才能让文件夹保持收起状态 - 某些语言扩展(如旧版 Pylance、rust-analyzer)默认不暴露完整折叠范围,需手动启用对应配置(例如
"rust-analyzer.cargo.loadOutDirsFromCheck": true) - JSON、Markdown 等无语法块的语言,“折叠全部”基本无效,只能靠
#region注释手动划区
自定义快捷键时最容易忽略的坑
VSCode 允许覆盖默认键绑定,但必须明确指定 when 条件,否则可能在错误上下文触发(比如在搜索框里按 Ctrl+K Ctrl+0 却执行了代码折叠)。
正确写法示例(keybindings.json):
[{"key":"ctrl+alt+0","command":"editor.foldAll","when":"editorTextFocus && !editorReadonly"},{"key":"ctrl+alt+j","command":"editor.unfoldAll","when":"editorTextFocus && !editorReadonly"}]
关键点:
- 别用
workbench.action.***开头的命令——那是界面操作,不是编辑器折叠逻辑 -
editorTextFocus确保只在代码编辑器聚焦时生效,避免和资源管理器快捷键冲突 - Mac 用户注意:
Cmd+K Cmd+0是连按,不是Cmd+K+ 松手 +Cmd+0;松手太早会只触发Cmd+K的清空终端行为


















