先确认语言模式是否为html,若状态栏显示“plain text”等则缩进失效;再配置prettier统一处理深层嵌套,并启用括号高亮、折叠提示及htmlhint校验确保dom结构合法。

VSCode里HTML标签嵌套错乱,先看语言模式对不对
很多嵌套显示异常根本不是缩进问题,而是VSCode压根没把文件当HTML解析。右下角状态栏显示“Plain Text”或“PHP”“Vue”时,高亮、括号匹配、自动缩进全失效。
必须手动点击右下角语言标识 → 选“Configure File Association for .html…” → 设为HTML;如果是模板文件(如.tpl、.erb),得在settings.json里加这条:
"files.associations": { "*.tpl": "html" }
- 不改语言模式,装再多插件也没用——格式化器连标签都识别不了
- Vue单文件组件里的
<template></template>块有时会被Vue插件接管,关掉它再试一次 - 某些老旧项目用
.htm后缀,也要单独映射:"*.htm": "html"
靠Prettier而不是内置格式化器处理深层嵌套
VSCode内置的html.format.*配置对超过5层的嵌套支持很弱,且不处理<style></style>和<script></script>内部结构。Prettier才是目前唯一能统一处理HTML/CSS/JS混合嵌套的工具。
关键配置要写进项目级.prettierrc(不是用户设置):
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
{
"tabWidth": 2,
"useTabs": false,
"htmlWhitespaceSensitivity": "css",
"endOfLine": "lf"
}
-
htmlWhitespaceSensitivity: "css"防止Prettier误删<pre class="brush:php;toolbar:false;"></pre>或<textarea></textarea>里的空格 - 必须在
settings.json中显式指定[html]语言的默认格式化器:"[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } - 禁用
html.format.enable,否则内置格式化器和Prettier会打架
嵌套太深时,光靠缩进不够,得开括号高亮+折叠提示
当<div>套七八层,仅靠2空格缩进已经看不出层级了。这时候要依赖编辑器的视觉锚点:
<ul>
<li>光标停在任意<code><div>上,VSCode默认会高亮匹配的<code>










