如何让vim-prettier与vscode-prettier的格式化效果保持一致?
问题根因
你之前加的.vimrc配置项完全用错了:g:prettier#autoformat 这个参数是用来控制哪些场景、哪些文件类型触发自动格式化的,根本不是指定Prettier配置文件路径的选项,加了这行之后vim-prettier根本不会按你预期加载/home/user/.prettierrc.json的配置,效果对不上是必然的。
对齐方案
按下面步骤操作就能让两边格式化效果完全一致:
- 先删掉你之前错误添加的那行
let g:prettier#autoformat = ["/home/user/.prettierrc.json"]配置,避免参数冲突。vim-prettier默认的配置文件查找逻辑和VSCode Prettier扩展完全一致:会从当前打开文件所在目录开始向上递归,查找.prettierrc.json、.prettierrc.js、prettier.config.js等标准命名的配置文件,全局配置也会默认读取用户目录下的配置文件,不需要额外指定路径。 - 统一两边使用的Prettier版本,这是格式化效果差异的最常见诱因:
- 先在VSCode里打开设置,搜索
prettier.prettierPath,确认当前VSCode实际调用的Prettier可执行文件路径,同时可以在Prettier的输出面板里看到具体版本号。注意VSCode默认可能用扩展自带的捆绑版Prettier,也可能用项目本地node_modules里安装的版本,必须先把这个路径和版本确认清楚。 - 在Vim里执行
:PrettierVersion查看当前vim-prettier调用的Prettier版本,如果和VSCode的版本不一致,直接在.vimrc里加一行配置,指定和VSCode完全相同的Prettier可执行文件路径即可:let g:prettier#exec_cmd_path = "替换成你在VSCode里查到的Prettier绝对路径"
- 先在VSCode里打开设置,搜索
- 清理两边的硬编码规则覆盖,避免配置优先级导致的差异:
- VSCode侧不要在用户设置、工作区设置里硬编码任何Prettier格式化规则(比如手动设置
prettier.semi、prettier.singleQuote、prettier.tabWidth这类参数),所有格式化规则全部写到.prettierrc.json配置文件里,同时确认没有开启prettier.configPath单独指定其他配置文件。 - Vim侧不要在
.vimrc里加任何g:prettier#config#开头的规则配置(比如let g:prettier#config#tab_width = 2这类),这类配置的优先级高于配置文件,会直接覆盖.prettierrc.json里的规则,必然导致两边效果不一致。
- VSCode侧不要在用户设置、工作区设置里硬编码任何Prettier格式化规则(比如手动设置
- 校验配置加载结果:
- VSCode里打开Prettier的输出面板,可以看到当前加载的配置文件路径、所有生效的格式化规则。
- Vim里执行
:PrettierConfigDebug命令,会打印当前加载的配置路径和生效规则,和VSCode输出的规则逐项比对,完全一致后格式化效果就会完全对齐。
额外注意:如果你的项目里有
.editorconfig文件,两边的Prettier默认都会读取这个文件的规则覆盖配置,要确认两边的EditorConfig解析开关状态一致,避免这部分规则导致格式差异。
内容的提问来源于stack exchange,提问作者candrew
相关产品推荐
相关产品推荐

