Shift+Alt+F无反应主因是HTML格式化服务未启动,需确认文件后缀为.html、右下角语言模式设为HTML、settings.json中"html.format.enable": true已启用,并确保Prettier等默认格式化器正确配置。

VS Code 里按 Shift+Alt+F 没反应,怎么修?
不是快捷键坏了,而是 HTML 格式化服务根本没启动。常见原因就三个:文件后缀不是 .html、语言模式没设成 HTML、"html.format.enable": true 被关了。
- 右下角状态栏看语言标识,如果不是
HTML,按Ctrl + Shift + P输入Change Language Mode,选HTML - 打开
settings.json,确认有这行:"html.format.enable": true - 如果用 Prettier,还要检查它是否设为 HTML 的默认格式化工具——在设置里搜
default formatter for html,选Prettier
editor.tabSize 和 html.format.indentInnerHtml 到底谁管什么?
这两个配置常被搞混,但职责完全不重叠:editor.tabSize 控制你按 Tab 键时插入几个空格;html.format.indentInnerHtml 决定格式化时是否给 <html>、<body> 这类根标签的子元素缩进。
- 想让
<head>和<body>对齐在<html>下面?必须设"html.format.indentInnerHtml": true - 想让每次按 Tab 插入 2 个空格而不是 4 个?改
"editor.tabSize": 2,不是改html.format.*下的任何字段 - 漏掉
html.format.indentInnerHtml,<head>就会贴着左边,看着像没嵌套
为什么一定要禁用 editor.detectIndentation?
这个开关一开,VS Code 会根据文件里第一行的缩进猜用空格还是 Tab、猜缩进宽度——结果就是同一项目里,有人提交的是 2 空格,有人是 4 空格,还有人混着 Tab 和空格,git diff 里全是“仅空格变化”。
- 直接在
settings.json加这句:"editor.detectIndentation": false - 再配
"editor.insertSpaces": true和"editor.tabSize": 2(或 4),强制统一 - 团队项目建议写进
.vscode/settings.json,随代码一起提交,新人 clone 就生效
里的缩进为什么总丢?
<pre> 只保留原始换行和空格,但浏览器默认样式会让它字体变小、边距塌陷、横向溢出——你看到的“缩进没了”,其实是 CSS 在捣鬼,不是 HTML 写错了。
立即学习“前端免费学习笔记(深入)”;
- 必须加 CSS:
white-space: pre-wrap(保留空格+自动换行)或white-space: pre-line(合并连续空格但保留换行) - 外层包一层
<div class="code-block">,再设overflow-x: auto,否则宽代码直接撑破容器 -
<pre>里别直接写<div>这种标签,得先转义成<div>,不然浏览器真解析 缩进不是浏览器要的,是人要的;而人最容易忽略的,是编辑器配置和团队同步这两步——工具链一旦松动,缩进退化比 bug 还快。</div>



















