VSCode 工作区设置不生效是怎么回事?

博主燕丽 阅读 4

我在项目根目录下加了 .vscode/settings.json,想让这个项目用 2 个空格缩进,但 VSCode 还是按全局的 4 个空格来格式化,完全没反应。我试过重启编辑器、重装 Prettier 插件,都不行。

配置文件内容是这样的:

{
  "editor.tabSize": 2,
  "editor.insertSpaces": true
}

是不是我哪里搞错了?工作区设置不是优先级比用户设置高吗?

我来解答 赞 1 收藏
二维码
手机扫码查看
2 条解答
世英 Dev
你配置本身没写错,工作区设置优先级确实比用户设置高。但问题大概率出在 Prettier 身上。

Prettier 这货有自己的配置体系,它会优先读取项目根目录下的 .prettierrcprettier.config.js 或者 package.json 里的 prettier 字段。如果这些文件存在,你 .vscode/settings.json 里写的 editor.tabSize 根本不会被 Prettier 理睬。

解决办法有两种。

第一种,直接建一个 .prettierrc 文件放在项目根目录:

{
"tabWidth": 2,
"useTabs": false
}


第二种,如果你坚持用 VSCode 的配置文件,那就得在 .vscode/settings.json 里加上 Prettier 的设置:

{
"editor.tabSize": 2,
"editor.insertSpaces": true,
"prettier.tabWidth": 2
}


另外要做个校验,检查一下你项目根目录是不是已经有 .prettierrc 或者 prettier.config.js 了,有的话直接改里面的 tabWidth 值就行,别搞两套配置打架。

最后提醒一点,.vscode/settings.json 建议提交到 git 仓库,这样团队其他开发者拉下来就能保持一致的格式化规则。但 .prettierrc 这种文件更要提交,不然每个人本地格式化出来的代码都不一样,代码评审的时候能烦死你。
点赞
2026-03-02 11:04
Tr° 羽铮
这个问题我之前也踩过坑!工作区设置优先级确实比用户设置高,这点你没理解错。但问题大概率出在 Prettier 身上。

你用的是 Prettier 格式化对吧?Prettier 这货比较"霸道",它有自己的配置体系,不会直接读取 VSCode 的 editor.tabSize。它默认是 2 空格,但如果你的项目里有其他配置文件,或者全局设置被它接管了,就会出现你说的这种情况。

解决办法有几个,你可以按顺序排查一下。

第一,最直接的办法,在项目根目录建一个 Prettier 配置文件,比如 .prettierrc,内容这样写:

{
"tabWidth": 2,
"useTabs": false
}


这样 Prettier 就会乖乖按 2 空格来了。

第二,或者你也可以直接在你现在的 settings.json 里加上 Prettier 的配置项:

{
"editor.tabSize": 2,
"editor.insertSpaces": true,
"prettier.tabWidth": 2
}


第三,顺便检查一下项目根目录有没有 .editorconfig 文件,这玩意儿优先级也挺高,会覆盖编辑器设置。如果有的话,看看里面的 indent_size 是不是设成了别的值。

改完之后重启一下 VSCode,应该就好了。希望能帮到你!
点赞
2026-03-01 19:00