必须同时设置editor.insertSpaces为true和editor.tabSize为4,缺一不可;仅设tabSize仍会插入\t字符,导致Git diff、linter等报错,因tabSize不决定输入类型,insertSpaces才控制按Tab键插入空格还是制表符。

必须同时设置 editor.insertSpaces 和 editor.tabSize,缺一不可;只改其中一个,Tab 键照样插入 \t 字符,后续 Git diff、linter、PEP8 检查全会报错。
为什么改了 tabSize 还是插 Tab 字符
editor.tabSize 仅控制制表符显示宽度或空格数量,不决定按 Tab 键到底输什么。真正起作用的是 editor.insertSpaces:
-
editor.insertSpaces: true→ 按 Tab 插入空格(数量由tabSize决定) -
editor.insertSpaces: false→ 按 Tab 插入\t字符,哪怕tabSize是 4,底层仍是制表符
常见现象:右下角状态栏显示 Tab Size: 4,但点开却是 Spaces: 2 ——说明当前文件启用了语言专属设置,已覆盖全局值。
怎么写进 settings.json 才真正全局生效
打开 VS Code 设置(Ctrl+, 或 Cmd+,),点击右上角 {} 图标进入 settings.json,在根层级添加这两项:
{
"editor.insertSpaces": true,
"editor.tabSize": 4
}
注意:
- 不要只设
tabSize,也不要只设insertSpaces - 别写在
[python]或[html]块里——那是语言专属设置,只对对应文件生效 - 如果项目里已有
.vscode/settings.json,它会覆盖用户级设置,需同步修改
已有代码里的 2 空格怎么批量变 4 空格
改完设置后,旧代码不会自动重缩进。VS Code 只管新输入,不管已有结构。
- 最稳方式:全选(
Ctrl+A)→ 格式化(Shift+Alt+F/Shift+Option+F),前提是已装对应 formatter(如 Prettier、Black)且其配置允许改缩进 - 无依赖方案:打开替换面板(
Ctrl+H),勾选「正则」,搜^( )(?=\S)(行首恰好两个空格 + 后跟非空白字符),替换成(四个空格) - 千万别全局搜
\t→ 替换——万一代码字符串里真有制表符,就全毁了
最容易被忽略的一点:editor.detectIndentation 默认开启,打开老项目时会读取第一行缩进并覆盖你的设置;如果首行缩进混乱,它可能直接把你设的 4 空格变成 2 或 Tab ——这时得手动点右下角切换,或临时关掉 detectIndentation。











