必须修改用户级settings.json,通过ctrl+,→{}图标确认状态栏显示“用户”;editor.tabsize、insertspaces、detectindentation需协同配置;editor.fontsize与terminal.integrated.fontsize须分别设置且建议一致;常见失效原因包括作用域混淆、语言块被项目配置覆盖及json语法错误。

全局设置必须改用户级 settings.json,改工作区或手动拼路径基本等于白干。
怎么打开真正的用户级 settings.json
快捷键 Ctrl + ,(Windows/Linux)或 Cmd + ,(macOS)打开设置界面 → 右上角点 {} 图标 → 左下角状态栏显示“用户”才对。别在已打开文件夹时误点成“工作区”,也别手动去 %APPDATA%\Code\User\settings.json 或 $HOME/Library/Application Support/Code/User/settings.json 拼路径——VSCode 自动定位更稳,且能实时校验 JSON 语法。
editor.tabSize、editor.insertSpaces 和 editor.detectIndentation 必须一起配
只设 "editor.tabSize": 4 不够,Tab 键行为还受另外两个开关控制:
-
"editor.insertSpaces": true:强制用空格替代 Tab 字符,否则按 Tab 仍会插入\t -
"editor.detectIndentation": false:关掉自动检测,否则打开一个缩进混杂的文件(比如前几行是 2 空格、后几行是 4),VSCode 会突然重设整个编辑器缩进,光标跳、格式崩、Prettier 失效
这三项建议写死在用户级,避免被项目级配置覆盖。单独给某语言设缩进(如 "[typescript]": { "editor.tabSize": 2 })可以,但前提是上面三个基础项已统一关牢。
editor.fontSize 和 terminal.integrated.fontSize 是两回事
改了 "editor.fontSize": 14,只影响代码编辑区;底部终端还是糊的,因为终端字体由 terminal.integrated.fontSize 单独控制:
- 两者值建议一致,眼睛不用反复适应
- 改完已打开的终端不会刷新,要新建一个(
Ctrl + Shift + `)才生效 - 旧键名
terminal.fontSize已弃用,别用
注意:window.zoomLevel 是整个窗口等比缩放(菜单栏、图标、侧边栏全变),和字体大小无关。按 Ctrl + + 后发现侧边栏也放大了?那是它在起作用。
为什么改了不生效?最常踩的三个坑
不是语法错,而是作用域或覆盖逻辑没理清:
- 你在项目里打开了
.vscode/settings.json,却以为改的是全局设置 - 用户级写了
"editor.formatOnSave": true,但又加了"[json]": { "editor.formatOnSave": false },结果 JSON 文件不格式化 -
settings.json末尾多了一个逗号,或用了单引号,VSCode 底部状态栏会标红,鼠标悬停提示Invalid configuration file,位置精准到行
复杂点在于:语言块(如 "[vue]")在用户级只是默认值,一旦项目里有同名配置,立刻被覆盖;而 editor.detectIndentation 这种开关,哪怕只在一个文件里触发过一次自动检测,后续行为就可能残留干扰。所以关它,不是可选项,是协作前提。











