保存文件时,缩进先被改成两格,紧接着又被改回四格,光标乱跳,屏幕闪一下。两个格式化程序同时在跑,谁后执行谁说了算。
第一步是明确只留一个默认格式化器。右键编辑器,选使用格式化文档,再点配置默认格式化程序,列表里挑一个。这一步会写进 settings.json 的 editor.defaultFormatter 字段。想按语言分开,就在方括号加语言名的段落里单独写。
保存时别叠两层
editor.formatOnSave 打开后,编辑器只调用默认格式化器。如果 ESLint 扩展又开了保存时自动修复,它会在旁边再改一遍,于是就有了闪两下的效果。留一个就行,格式交给 Prettier,规则交给 lint 阶段。
Prettier 和 ESLint 为什么打架
Prettier 管排版,ESLint 管规则,本来不冲突。但 ESLint 里的缩进、引号这类格式规则会和 Prettier 抢同一件事。装一份 eslint-config-prettier,把格式规则关掉,只保留逻辑类规则,冲突就没了。
几个容易忽略的点
- Vetur 和 Volar 同时安装,Vue 文件会被格式化两遍,留一个。
- 项目里有 .prettierrc,编辑器设置的优先级更低,改配置要改对地方。
- Windows 上换行符混用,格式化后整个文件都算改动,git 差异一片红。
顺手把粘贴时自动格式化也关掉。粘贴一段代码就被重排,比保存时闪一下更烦,尤其从文档里复制示例的时候。
团队里最好把配置文件提交到仓库,别各人本地一套。格式规则不统一,比压根不格式化还烦人。