80%以上代码折叠失效或卡顿由插件干扰导致,常见于esbenp.prettier-vscode、dbaeumer.vscode-eslint、ms-python.python等语言类插件;应通过工作区settings.json精准禁用并关闭重开文件标签页。

哪些插件会直接干扰代码折叠逻辑
代码折叠失效或卡顿,80% 以上不是 VSCode 自身问题,而是插件在后台持续解析 AST、劫持语言服务或重写折叠提供器导致的。最常出问题的是那些声明了 onLanguage:* 或 workspaceContains:* 激活事件的语言类插件,它们一启动就注入自己的 FoldingProvider,覆盖或延迟默认折叠行为。
-
esbenp.prettier-vscode:若未配.prettierignore,保存时会触发全文件格式化 + 重解析,折叠状态重置 -
dbaeumer.vscode-eslint:开启eslint.validate: ["javascript", "typescript"]且项目含大量 JS/TS 文件时,语言服务器持续扫描会阻塞折叠范围计算 -
ms-python.python:Python 插件的折叠逻辑依赖 Pylance,但旧版 Pylance( -
bradlc.vscode-tailwindcss:启用tailwindCSS.experimental.classRegex后,会在每行正则匹配 class 名,拖慢编辑器响应,间接导致折叠按钮点击无反应
怎么验证某个插件是否破坏了折叠功能
别靠“感觉”,用 VSCode 内置工具定位真实干扰源。禁用插件后折叠仍不生效,说明问题不在扩展层;但若禁用后立刻恢复,就锁定了目标。
- 终端执行
code --disable-extensions启动纯净版,打开同一文件测试折叠 —— 若正常,说明必有插件干扰 - 命令面板运行
Developer: Show Running Extensions,筛选 “Start-up” 类型,看哪些插件Activation time> 50ms 且当前文件语言匹配(如打开 .ts 文件时ms-vscode.vscode-typescript-next激活时间飙升) - 右键折叠箭头 → “Inspect Context Menu”,观察菜单项来源:若出现 “Prettier Fold” 或 “ESLint Folding” 等非原生条目,说明该插件已注册自定义折叠逻辑
禁用策略要分场景,不能一刀切
全局禁用可能误伤必需功能(比如 TypeScript 项目里禁掉 ms-vscode.vscode-typescript-next 会导致跳转和类型提示全挂),工作区禁用才是精准解法。
- 对纯前端项目(无 Python/Go/Rust),在项目根目录
.vscode/settings.json中加:{ "extensions.enabled": { "ms-python.python": false, "ms-go.go": false } } - 对 Node.js 项目,禁用
esbenp.prettier-vscode但保留dbaeumer.vscode-eslint,可避免格式化打断折叠,同时维持 lint 提示 - 禁用后无需重启 VSCode,但需关闭再重开当前文件标签页,否则旧折叠缓存仍残留
内置插件没法禁用,但能关掉它的折叠行为
像 vscode.notebook-renderers 或 github.vscode-pull-request-github 这类内置插件,右键菜单里根本找不到“Disable”选项,它们也不响应 extensions.disabledExtensions。但它们暴露了开关配置,关掉就能消除干扰。
- 在工作区
settings.json中设置:{ "notebook.experimental.enableFolding": false, "githubPullRequests.folding": false } - 注意:这些配置项名不是统一规律,得查官方文档或进设置搜索关键词 “folding”,比如
markdown.preview.folding控制 Markdown 预览折叠,和编辑器本身无关 - 改完保存,VSCode 不会提示重启,但下次打开 notebook 或 PR 文件时,折叠区域就不会再被强行注入
Developer: Show Running Extensions 里谁在偷偷吃掉 Activation time。











