VSCode 默认缩进快捷键是 Tab 和 Shift+Tab,用于行级缩进控制;Shift+Alt+F(Windows/Linux)或 Shift+Option+F(Mac)触发格式化,需安装并配置对应语言的格式化器;启用 editor.formatOnSave 和 .editorconfig 可实现跨编辑器统一缩进。

VSCode 默认缩进快捷键是 Tab 和 Shift+Tab
不是所有“缩进”都要靠格式化工具——最基础的行级缩进控制,VSCode 原生就支持。光标在某行或选中多行后,按 Tab 向右缩进一个单位,Shift+Tab 向左反缩进。这个行为不依赖插件,也不需要保存或触发格式化,响应极快。
但要注意:它的效果完全取决于当前文件的缩进设置(比如是空格还是 Tab、宽度是 2 还是 4)。如果状态栏右下角显示 Spaces: 2,那 Tab 就插入 2 个空格;若显示 Tab Size: 4 且未勾选 Insert Spaces,则插入的是真实 Tab 字符。
- 状态栏点击缩进信息可快速切换当前文件的缩进类型和宽度,适合临时调试不同风格的代码
- 多人协作时,仅靠快捷键缩进容易导致混用空格/Tab,后续 Git diff 会突兀地显示大量空格变更
- HTML 或 JSON 等结构化文本中,手动
Tab缩进常错位——因为它们没语法上下文,无法自动对齐层级
真正统一缩进得靠 Shift+Alt+F 格式化文档
这是 VSCode 的默认格式化快捷键(Windows/Linux),Mac 是 Shift+Option+F。它不是“调缩进”,而是调整个代码块的结构:包括缩进、换行、括号位置、空格等。前提是——你已装了对应语言的格式化器,并设为默认。
常见错误现象:按下快捷键没反应,或缩进没变。原因通常是:
- 没安装语言支持插件(如 Vue 项目缺
Vetur,TypeScript 项目缺ESLint或Prettier) - 装了插件但没设为默认:搜索设置项
editor.defaultFormatter,确认值是对应扩展的 ID(例如esbenp.prettier-vscode) - 项目根目录缺少配置文件(如
.prettierrc),导致格式化器按内置规则跑,和团队风格不一致
举例:Vue 文件里写了一段没缩进的 <template>,按 Shift+Alt+F 后,标签会自动对齐到父级层级,比手动敲 Tab 准确得多。
想保存就自动缩进?必须开 editor.formatOnSave
手动按快捷键容易忘,尤其写完一大段逻辑急着测试时。启用 editor.formatOnSave 后,Ctrl+S 的瞬间,缩进、空格、分号全被重排——这才是日常开发的真实节奏。
但这里有个关键前提:格式化器必须能识别当前文件类型。比如你用 Prettier 处理 JS,但打开的是 .astro 文件,默认不生效。解决方法是加语言专属配置:
- 在
settings.json中写:"[astro]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } - 或者全局启用但排除某些类型:
"editor.formatOnSaveExclude": ["**/*.min.js"] - 别只开
formatOnSave,顺手把editor.autoIndent设为full——粘贴代码、回车换行时也能智能对齐
为什么推荐用 .editorconfig 而不是只靠 VSCode 设置?
VSCode 的 editor.tabSize 或 editor.insertSpaces 只管自己,其他编辑器(如 WebStorm、Vim)或 CI 工具(如 prettier-check)根本看不到。一旦别人用 Tab 编辑、你用空格保存,冲突立刻出现。
.editorconfig 是跨编辑器、跨工具的通用约定,内容像这样:
root = true [*] indent_style = space indent_size = 2 end_of_line = lf charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true [*.ts] quote_type = single
只要项目里有这个文件,Prettier、ESLint、甚至 GitHub 的 PR 检查都会读它。VSCode 需要额外装 EditorConfig for VS Code 插件才能识别——否则设置再细,也只在你本地生效。
最容易被忽略的一点:.editorconfig 的 indent_size 和 VSCode 的 editor.tabSize 必须一致。否则格式化器按 2 空格来,编辑器显示成 4,光标跳转错位,连选中都困难。










