Inline Fold 插件仅压缩 class/className 属性中的长字符串,不替代原生折叠;需正确配置 inlineFold.languages 和 inlineFold.rules,并确保文件语言模式准确(如 .tsx 设为 JavaScript React),折叠为视图层临时渲染,光标操作会自动展开。

Inline Fold 插件不能替代 VSCode 原生代码折叠,它只做一件事:把 class / className 属性值里的长字符串视觉压缩掉,不改代码、不碰结构、不折叠函数或标签层级。
为什么 class 属性值折叠不了?先检查 language 绑定是否生效
装完 Inline Fold 后 class 还是展开的,大概率是没配 inlineFold.languages。VSCode 默认对任何属性都不折叠,必须显式告诉它:“在 HTML 文件里,class 属性要折;在 JSX 里,className 属性要折”。
- 打开
settings.json(Cmd+, → 右上角“打开设置(JSON)”) - 确认
inlineFold.languages是数组,且包含这两个对象:{"language": "html", "attribute": "class"}{"language": "javascriptreact", "attribute": "className"} - 语言标识名必须准确:
javascriptreact不是jsx或typescriptreact;html不是htmlembedded - 改完保存,**重新打开一个 .html 或 .tsx 文件**——热重载不触发规则重载
折叠后显示 tw:… 而不是 …,得靠 rules 配置匹配 Tailwind 类名
默认折叠占位符是 …,看不出是 Tailwind。想一眼识别,得加 inlineFold.rules 并用正则匹配典型前缀。
- 在
settings.json中添加inlineFold.rules数组(若无则新建) - 写一条规则,
pattern匹配含bg-、text-、p-、flex等的 class 值:"pattern": "(bg-|text-|p-|m-|flex|grid|w-|h-|rounded|shadow|border)" - 设
"placeholder": "tw:…",这样折叠后显示tw:…,语义清晰 - 可加
"maxVisible": 2,只留前两个类名,避免占位符过长
JSX 中 className 折叠失败?重点查文件语言模式和扩展冲突
常见现象:.tsx 文件里 className 没反应,但 .jsx 可以。根本原因不是插件问题,而是 VSCode 当前语言模式没识别成 javascriptreact。
- 看右下角状态栏:必须显示
JavaScript React(不是TypeScript或Plain Text) - 如果显示
TypeScript,点它 → 选Configure File Association for '.tsx'…→ 设为JavaScript React - 禁用可能干扰的扩展:比如某些 Tailwind 插件会劫持
className解析逻辑,临时禁用后测试 - 确认没有其他折叠类插件(如 Auto Fold、Fold Plus)与 Inline Fold 冲突——它们可能覆盖 attribute 绑定逻辑
折叠了但光标一动就展开?这是 inlineFold 的默认行为限制
Inline Fold 的折叠是“编辑器视图层”的临时渲染,不是语法级折叠。它不保存状态,也不响应光标移动自动维持收起——这点和原生 Ctrl+Shift+[ 完全不同。
- 折叠后点击属性值任意位置,或输入字符,都会立刻恢复展开(设计如此)
- 如需稳定收起,只能手动触发:光标停在
class行 → Cmd+Shift+P → 输入Inline Fold: Toggle→ 回车 - 无法通过快捷键绑定全局 toggle,因为该命令不支持 keybinding.json 注册(插件未导出 command ID)
- 真正需要长期隐藏类名时,建议配合
// #region把整个 JSX 标签块包起来,用原生折叠控制
Inline Fold 的价值不在“全自动”,而在“精准干预”——它只动 class 字符串,不动结构、不改 AST、不依赖语言服务器。一旦配置错 language 名或 pattern 正则,它就彻底静默,连报错都不会有。调试时盯住 settings.json 里那几行,比查日志还快。


















