Windows/Linux默认折叠/展开快捷键为Ctrl+Shift+[和Ctrl+Shift+],macOS为Cmd+Option+[和Cmd+Option+];不生效主因是光标位置不当、语言不支持或扩展冲突。

VSCode 里折叠/展开代码的默认快捷键是什么
Windows/Linux 默认是 Ctrl+Shift+[ 折叠、Ctrl+Shift+] 展开;macOS 是 Cmd+Option+[ 和 Cmd+Option+]。但很多人按了没反应,不是快捷键失效,而是当前光标不在可折叠区域(比如空行、注释行、或语言扩展没提供折叠支持),或者文件类型根本没启用折叠逻辑。
怎么自定义折叠快捷键(不改 JSON 文件)
最稳妥的方式是通过 VSCode 内置的键盘快捷键编辑器,避免手写 keybindings.json 出错:
- 打开命令面板(
Ctrl+Shift+P或Cmd+Shift+P),输入Preferences: Open Keyboard Shortcuts - 在搜索框里打
editor.fold,你会看到editor.fold、editor.unfold、editor.foldAll等动作 - 右键某条快捷键 →
Change Keybinding,然后直接按下你想要的新组合键 - 如果提示冲突,VSCode 会自动禁用旧绑定,不用手动删
注意:editor.fold 只作用于当前光标所在折叠区域(比如一个函数、一个 if 块),不是整文件;而 editor.foldAll 才会把所有层级都收起来。
为什么改了快捷键还是不生效
常见原因有三个:
- 当前语言没有注册折叠提供者(比如纯文本
.txt文件默认不支持折叠,即使你绑了快捷键也没用) - 扩展干扰:某些语言扩展(如 Prettier、ESLint 插件)会覆盖默认折叠行为,关掉它们试试
- 快捷键被系统或其它软件劫持(尤其是
Ctrl+Shift+[在部分中文输入法下会触发中英文切换,建议换用Ctrl+K Ctrl+[这类更少冲突的组合)
验证是否真生效:打开一个支持折叠的文件(如 .ts 或 .py),把光标放在一个函数名上,再按你的新快捷键——如果左侧出现折叠箭头并收起,说明成功了。
想让折叠行为更“智能”,比如只折函数不折注释
这不属于快捷键范畴,而是靠语言配置控制折叠粒度。VSCode 本身不决定“哪些能折”,它依赖语言服务器或语法扩展提供的 foldingStrategy:
- 在设置里搜
editor.foldingStrategy,可选值是auto(推荐)或indentation -
auto会读取语言扩展提供的折叠区域(如 TypeScript 扩展会识别function、class、if等) -
indentation则单纯按缩进判断,适合没有语言扩展的场景,但容易把注释块也当成可折叠单元 - 部分语言还支持
editor.showFoldingControls(设为mouseover可隐藏左侧折叠控件,只留快捷键)
真正难调的不是快捷键,是折叠边界本身——比如 JSX 里一个 {} 表达式该不该单独折叠,取决于对应语言扩展的实现,VSCode 不干预。











