【问题标题】:How to Convert Tabs into Whitespaces on Save?如何在保存时将制表符转换为空格?
【发布时间】:2020-02-08 18:27:32
【问题描述】:

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

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

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

【问题讨论】:

  • 如何让 QtCretor 在保存时“自动将所有选项卡更改为空白”?

标签: visual-studio-code tabs whitespace indentation


【解决方案1】:

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

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


对于 JavaScript,我使用 Prettier 扩展名。
(它有plugins for other languages,但我主要用于JS。)

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

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

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

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

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

.prettierrc.js 中:

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

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

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


对于 Python,VS Code currently supports 3 formatting providers):

  • “autopep8”
  • “yapf”
  • “黑色”。

我使用“autopep8”。

在您的环境中安装autopep8。然后在 VS Code 中,确保 select the environment 具有 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 style guide,它已经推荐了 spaces over tabs。所以所有需要做的就是启用它。


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

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

【讨论】:

  • 谢谢 Gino,但它不起作用:S 我遵循的步骤:1. 下载 Prettier - 代码格式化程序 2. 将 VS Code 设置中的默认格式化程序更改为 esbenp.prettier-vscode 3. 设置 @987654341 @ 适用于所有语言(只是不要指定语言) 4. 创建一个名为 .prettierConfig.js 的新文件 5. 在 settings.json 中添加以下内容:"prettier.configPath": ".prettierConfig.js", "prettier.tabWidth": 4, "prettier.useEditorConfig": false
  • 它似乎适用于 .vscode/settings.json,但不适用于 ~/.config/Code/User/settings.json
  • 我正在尝试为所有语言做这件事。它是哪种语言并不重要。
  • @Kikadass "but it didn't work" :嗯,这是因为您执行的步骤与我在回答中描述的步骤完全不同 .我在另一台机器上再次尝试了我的步骤,它可以工作。我更新了我的答案,为 JS 指定 Prettier,为 Python 指定 autopep8,因为两者都有不同的步骤/设置可供使用。
  • @Kikadass "我正在尝试对所有语言都这样做。" 我不认为你可以,因为 不同的 语言有 不同的格式,以及不同的格式化程序,它们可以正确地修复代码以应用那些不同的格式。您必须找到一个可以处理所有您将要使用的语言的格式化程序。您可以尝试设置"editor.formatOnSave": true,但这只会将VS Code 设置为"pick up relevant installed formatter extensions",这可以追溯到我安装特定语言格式化程序的答案。
【解决方案2】:

每当我遇到缩进问题时,我都会上网搜索“美化 python 代码”,教程点的第二或第三个链接可以帮助我解决问题(link)。 只需输入您的代码,它就会(在大多数情况下)为您完全修复它,或者以比解释器更好的方式指导您解决错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 2010-10-02
    • 1970-01-01
    • 2016-10-11
    相关资源
    最近更新 更多