vscode默认不支持多行注释自动折叠,必须手动添加#region/#endregion标记;js/ts用// #region,python用# region;正则替换可批量添加或还原,但需注意格式与缩进。

VSCode 默认不支持按注释类型折叠,得靠正则和自定义折叠区域
VSCode 的折叠逻辑基于缩进或语言语法(如 {}、function),它根本不识别「多行注释」为可折叠单元。想只折 /* ... */ 而不碰 if 块或函数,必须绕过默认机制,用「折叠区域」标记手动划出范围。
常见错误是去搜 "fold comments" 或改 "editor.foldingStrategy",这两个完全没用——前者不是配置项,后者只影响缩进/语法模式切换,对注释零作用。
- 必须在注释前后插入 VSCode 识别的折叠标记:
// #region和// #endregion(JS/TS)或/* #region *///* #endregion */(部分语言) - 原生
/* ... */注释无法被自动折叠,哪怕加了@fold这类 JSDoc 标签也不行 - 如果你用的是 TypeScript 或 JavaScript,
// #region是最稳的选择;Python 用# region和# endregion(注意空格)
批量给现有 /* ... */ 注释加上折叠标记的实操方法
手动一行行加太慢,直接上 VSCode 多光标 + 正则替换。前提是你的多行注释格式统一,比如都以 /* 开头、*/ 结尾,且中间不含嵌套 */。
打开替换面板(Ctrl+H / Cmd+H),勾选「使用正则表达式」,填入:
\/\*(.*?)\*\/
替换为:
// #region$1// #endregion
- 这个正则会匹配所有
/*...*/,但要注意:如果注释跨很多行,需开启「. 匹配换行符」选项(点击.*按钮) -
$1是捕获的内容,保留原有注释文字,避免删掉说明 - 替换后记得保存文件,折叠标记才会生效;未保存的编辑器可能不刷新折叠状态
- 别对整个工作区莽撞替换——先在单个文件试,尤其要避开
node_modules或生成代码
折叠后代码被误收进去?检查缩进和标记位置
折叠区域严格按行生效,// #region 必须独占一行,且不能缩进(或与后续代码同级缩进),否则 VSCode 会把它当普通注释忽略。
典型翻车现场:
- 写成
if (x) { /* #region */ ... }——#region在大括号里,不被识别 - 写成
// #region(前面有空格)—— 大部分语言要求顶格或与所在作用域同级 - 把
// #endregion写在注释块最后一行的同一行,比如*/ // #endregion—— 必须换行 - JS/TS 中混用
/* #region */(不推荐),某些旧版 VSCode 版本不认这种写法
想恢复原始注释格式?别手动删,用反向正则回滚
加完标记后如果发现太多、太乱,或者团队不接受这种写法,可以用正则一键还原。前提是当时没改过其他内容,且标记是标准格式。
查找:
\/\/ #region([\s\S]*?)\/\/ #endregion
替换为:
/*$1*/
-
[\s\S]是为了匹配换行,比.*更可靠 - 注意
$1前后没有空格,否则还原出来的/* ... */会多出空白行 - 如果之前用了
/* #region */这种变体,得单独再跑一遍对应正则
这事没法全自动又无损——折叠标记本质是侵入式改造,不是开关。真要长期管理大段说明文字,不如拆成独立 .md 文件或用文档生成工具,别硬塞进源码里。











