VSCode:保存和格式化之间的选项卡大小不同

Eng*_*ery 5 formatting tabs visual-studio-code

我已将制表符设置为空格,并将制表符宽度设置为其中的 2 个。当我明确要求 vscode 重新格式化我的代码(javascript)时,它完全符合我的预期。当我在代码中创建新行时,它也会自动缩进 2 个空格。

但是,当我保存(手动或自动)时,代码将重新格式化为 4 个空格!

它不会使用 yaml 执行此操作。

我相信我正在使用 prettier (因为它在状态栏中这么说),距离它所说的地方有一点距离Spaces: 2。在我的 settings.json 中有这样的内容:"editor.tabSize": 2。我也有这个漂亮的小东西:

"[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
Run Code Online (Sandbox Code Playgroud)

我认为这意味着它使用更漂亮。它具有为 yaml 记录的相同格式化程序(事实上,几乎所有其他内容)。

有人可以告诉我如何停止这种烦人的行为而不失去自动保存的好处吗?

Ale*_*ovs 4

  1. 请查看.editorconfig您的项目中是否存在。
  • 如果是这种情况,请编辑该文件(请参阅https://editorconfig.org/),或者如果它是共享项目,您可以与作者讨论。例如:
[*.js]
indent_style = space
indent_size = 2
Run Code Online (Sandbox Code Playgroud)
  • 或者完全关闭.editorconfig支持:
[*.js]
indent_style = space
indent_size = 2
Run Code Online (Sandbox Code Playgroud)
  1. 如果不使用.editorconfig,我无法重复您的问题(即配置的 tabSize = 2,重新格式化为 4)。但是解决方法是:
"prettier.useEditorConfig": false
Run Code Online (Sandbox Code Playgroud)

甚至仅限于javascript

"editor.formatOnSave": false
Run Code Online (Sandbox Code Playgroud)

这将保留自动保存功能,但跳过自动格式。

  1. 总结一下相关选项:
"[javascript]": { "editor.formatOnSave": false }
Run Code Online (Sandbox Code Playgroud)