解决VSCode中EditorConfig与Prettier插件冲突的方案

酷芳姑娘_5969

酷芳姑娘_5969

2026-10-03

785人浏览

原创

editorconfig 与 prettier 缩进配置冲突导致光标错位:.editorconfig 的 indent_size 仅控制回车缩进,.prettierrc 的 tabwidth 才决定保存后实际缩进;应删除前者中的缩进配置,交由后者统一管理。

解决vscode中editorconfig与prettier插件冲突的方案

EditorConfig 和 Prettier 缩进不一致导致光标新行插错空格

这是最常被忽略的“假生效”现象:.editorconfig 的 indent_size = 4 只影响你按回车时自动插入的缩进字符数;而 .prettierrc 的 tabWidth: 2 才决定保存时所有代码块的实际缩进宽度。两者值不同,就会出现“保存后缩进是 2 格,但新起一行光标却塞了 4 个空格”的错位。

解决办法不是调和二者,而是明确分工:

  • .editorconfig 仅保留基础元信息:charset、end_of_line、insert_final_newline、trim_trailing_whitespace
  • 所有缩进、引号、分号、尾逗号等风格控制,全部交给 .prettierrc
  • 删掉 .editorconfig 中的 indent_style 和 indent_size 行(哪怕只留着也得注释掉)

VSCode 设置里同时启用了 editor.formatOnSave 和 editor.codeActionsOnSave

这两个开关看似都跟“保存时干活”有关,但行为完全不同:editor.formatOnSave 调用的是默认格式化器(比如 esbenp.prettier-vscode),而 editor.codeActionsOnSave 可能触发 ESLint 的自动修复、TypeScript 的快速修复,甚至某些插件的隐藏副作用——比如重写 import 排序或补全缺失的 default 导出。

一旦开启 editor.codeActionsOnSave,它可能在 Prettier 格式化完后立刻再改一遍,造成属性换行错乱、空行增减异常等问题。

实操建议:

VSCode
VSCode

避免常见的 VSCode 错误——设置冲突、调试器配置和扩展冲突。

下载
  • 先清空 editor.codeActionsOnSave 字段(设为 {} 或直接删掉)
  • 确认 editor.formatOnSave 为 true,且只对目标语言启用,例如:
    "[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }
  • 如果真需要 ESLint 自动修复,改用 "editor.codeActionsOnSave": { "source.fixAll.eslint": true },并确保已安装 eslint-config-prettier 关闭所有与 Prettier 冲突的规则

Prettier 插件未识别 .prettierrc 或配置加载失败

VSCode 的 esbenp.prettier-vscode 插件不会无脑读取项目根目录下的 .prettierrc。它有一套严格的加载顺序和格式校验逻辑。常见失效原因包括:

  • .prettierrc 文件名拼错(比如写成 .prettier.json 或 prettierrc.json)
  • 文件内容 JSON 语法错误(多逗号、单引号、注释)——Prettier 不支持 JSONC,必须是纯 JSON 或 JS/TS 导出格式
  • 配置项写错,例如把 trailingComma 写成 trailing_comma,或值填了 "es6"(正确是 "es5" 或 "all")
  • VSCode 工作区设置(.vscode/settings.json)中覆盖了 prettier.* 配置,且值非法(如 "prettier.tabWidth": "2" 写成字符串而非数字)

验证方式:打开命令面板(Ctrl+Shift+P),运行 Prettier: Show Output,看输出窗口是否报 Failed to load config 或 Invalid configuration。

Vue/React 模板文件里 Prettier 格式化崩坏或报错

原生 Prettier 对 <template></template> 或 {% raw %}{{ }}{% endraw %} 这类非标准 HTML 结构支持有限。如果你没显式指定 parser,它会按默认 html 解析器处理,结果就是属性挤成一行、指令被截断、甚至抛出 Unexpected token 错误。

关键动作只有两个:

  • 在 .prettierrc 中强制指定 "parser": "html"(不是 vue,也不是 angular;Prettier 本身不内置 vue parser)
  • 卸载或禁用 prettier-plugin-vue ——除非你确认它已正确安装、版本匹配且在 .prettierrc 中通过 "plugins": ["prettier-plugin-vue"] 显式声明。否则它只会让 Prettier 启动时报 Cannot find module 'prettier-plugin-vue'

顺带一提:vscode-html-languageservice(VS Code 内置)和 esbenp.prettier-vscode 不能同时设为 HTML 类型的默认格式器,否则保存时会随机触发其中一个,结果不可预测。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

vscode插件冲突 vscode

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
vscode是什么_vscode怎么安装配置
vscode是什么_vscode怎么安装配置

VS Code(Visual Studio Code)是一款免费、开源的跨平台代码编辑器,由微软开发和维护。它被广泛用于软件开发和编程,支持多种编程语言和框架。VS Code 同时提供了丰富的功能和扩展性,使开发者可以高效地编写、编辑和调试代码。

2023.06.30

1215

18

vscode怎么运行代码
vscode怎么运行代码

vscode是一个运行于MacOS X、Windows和Linux之上的,针对于编写现代Web和云应用的跨平台源代码编辑器;vscode免费而且功能强大,对JavaScript和NodeJS的支持非常好,自带很多功能,例如代码格式化,代码智能提示补全、Emmet插件等。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.21

2512

3

vscode使用的框架介绍
vscode使用的框架介绍

VSCode是一款跨平台代码编辑器,它基于Electron框架和Monaco Editor构建。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

1869

12

vscode一般用来写什么语言
vscode一般用来写什么语言

VSCode是一款功能强大的代码编辑器,支持多种编程语言和文件格式。它内置对 JavaScript、Python、Java、C++、TypeScript、HTML/CSS、Go 等语言的支持。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.14

1707

8

vscode可以写什么语言
vscode可以写什么语言

vscode是一款强大的代码编辑器,支持多种编程语言的开发。通过安装扩展,可以为 JavaScript/TypeScript、Python、Java、C#、PHP、Go、Ruby、Rust、HTML/CSS 等语言提供智能代码补全、调试和格式化等功能。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

2567

12

vscode中文设置方法
vscode中文设置方法

方法一:在设置页面中,搜索“locale”,并选择“zh-cn”。方法二:按“Ctrl Shift P”快捷键,输入“Configure Display Language”,将语言修改为“zh-cn”。如果上述方法无效,可考虑安装中文插件。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1798

14

vscode用途介绍
vscode用途介绍

Visual Studio Code(VSCode)是一款由 Microsoft 开发的多功能文本编辑器,适用于各种编程语言。作为一款开源软件,VSCode 拥有代码高亮、自动补全、调试、Git 集成等强大功能,成为程序员不可或缺的工具。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1222

10

vscode和visualstudio的区别
vscode和visualstudio的区别

Visual Studio是一款功能强大的集成开发环境(IDE),适用于专业开发人员进行复杂项目的构建。而VSCode则是一款轻量级的代码编辑器,更适合各种规模的项目开发。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

1096

8

vscode设置中文界面不生效解决方法
vscode设置中文界面不生效解决方法

vscode设置中文界面不生效解决方法:安装中文语言包、通过命令面板设置语言、检查 locale.json 设置、重新安装中文语言包、检查 VSCode 版本和更新、排除插件冲突、检查系统语言设置、查看 VSCode 日志和错误消息、重置 VSCode 设置、查看官方文档和社区支持。想了解更多vscode的相关内容,可以阅读本专题下面的文章。

2024.03.15

434

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程