首页 > 解决方案 > 如何在保存时将制表符转换为空格?

问题描述

我想在保存文件时将制表符更改为空格。我以为设置中有一个选项或至少有一个扩展名,但我看不到它。

我看过许多其他要删除的帖子trim.trailingWhitespace,但这不是我想要的。按 T​​ab 键时,我还使用了从制表符到空格的转换。但这又不是我的问题。

我正在寻找的是保存文件并自动将所有选项卡更改为空格,就像 Qt Creator 所做的那样。

标签: visual-studio-codetabswhitespaceindentation

解决方案


这将取决于语言。您需要安装/设置特定于语言的格式化程序,然后启用该"editor.formatOnSave"设置,这将在保存文件时应用格式化程序规则。

这个答案适用于 Python 和 JavaScript,因为这是我通常使用的。


对于 JavaScript,我使用Prettier扩展。
(它有其他语言的插件,但我主要将它用于 JS。)

然后将这些添加到您的settings.json

// Set the default setting
"editor.formatOnSave": false,

// Then toggle depending on the language
"[javascript]": {
    "editor.formatOnSave": true
},

默认情况下,Prettier 已经提供了一些默认的格式化规则。但是您可以指定自己的配置文件来指定您自己的(或特定于项目的)格式规则集。

.
├── ...
├── .prettierrc.js
├── test.js
...
└── <<other files>>

.prettierrc.js 中

// prettier.config.js or .prettierrc.js
module.exports = {
    useTabs: false,
    tabWidth: 4
};

Prettier 配置指定不使用制表符并使用 4 个空格的缩进级别。现在,通过该设置,当您保存文件时,它会自动将制表符更改为空格(我理解这是您想要的)。还有其他格式选项

您会知道该扩展程序正在工作,因为它在状态栏中显示“更漂亮”:

在此处输入图像描述


对于 Python,VS Code 目前支持 3 个格式化提供程序):

  • “autopep8”
  • “耶普夫”
  • “黑色的”。

我使用“autopep8”。

autopep8在您的环境中安装。然后在 VS Code 中,确保选择具有autopep8. 然后将其添加到您的 settings.json 中:

// Set the default setting
"editor.formatOnSave": false,

"[python]": {
    "editor.formatOnSave": true
},

"python.formatting.provider": "autopep8",
"python.formatting.autopep8Args": [
    // "--ignore=W191, E101, E111"  // Uncomment to disable fixing indentation
],

在这里,autopep8格式化代码以遵循PEP8 样式指南,该指南已经建议使用空格代替制表符。所以所有需要做的就是启用它。


您可能还对与空格相关的 VS Code 设置感兴趣(这样一开始就不会将制表符放入文件中):

"editor.detectIndentation": false,
"editor.insertSpaces": true,
"editor.tabSize": 4,

推荐阅读