如何在保存时将制表符转换为空格?

Kik*_*ass 1 whitespace tabs indentation visual-studio-code

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

我看过很多其他关于删除的帖子trim.trailingWhitespace,但这不是我要找的。我还使用按 Tab 键时从制表符到空格的转换。但这又不是我的问题。

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

Gin*_*pin 6

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

\n\n

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

\n\n
\n\n

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

\n\n

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

\n\n
// Set the default setting\n"editor.formatOnSave": false,\n\n// Then toggle depending on the language\n"[javascript]": {\n    "editor.formatOnSave": true\n},\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ...\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 .prettierrc.js\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 test.js\n...\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 <<other files>>\n
Run Code Online (Sandbox Code Playgroud)\n\n

.prettierrc.js中:

\n\n
// Set the default setting\n"editor.formatOnSave": false,\n\n// Then toggle depending on the language\n"[javascript]": {\n    "editor.formatOnSave": true\n},\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n

您会知道该扩展正在运行,因为它在状态栏中显示“Prettier”:

\n\n

在此输入图像描述

\n\n
\n\n

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

\n\n
    \n
  • “autopep8”
  • \n
  • “耶夫”
  • \n
  • “黑色的”。
  • \n
\n\n

我使用“autopep8”。

\n\n

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

\n\n
// Set the default setting\n"editor.formatOnSave": false,\n\n"[python]": {\n    "editor.formatOnSave": true\n},\n\n"python.formatting.provider": "autopep8",\n"python.formatting.autopep8Args": [\n    // "--ignore=W191, E101, E111"  // Uncomment to disable fixing indentation\n],\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
\n\n

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

\n\n
"editor.detectIndentation": false,\n"editor.insertSpaces": true,\n"editor.tabSize": 4,\n
Run Code Online (Sandbox Code Playgroud)\n