如何在 VS Code 中配置 terraform 代码的对齐和缩进?

mar*_*ark 12 terraform visual-studio-code

我使用 VS Code 开发 terraform 代码。我当前的 terraform 插件是:

Name: Terraform
Id: hashicorp.terraform
Description: Syntax highlighting, linting, formatting, and validation for Hashicorp's Terraform
Version: 1.4.0
Publisher: HashiCorp
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=HashiCorp.terraform
Run Code Online (Sandbox Code Playgroud)

考虑以下代码:

output "sql_server" {
  description = "A dictionary of objects containing various Azure Sql Server properties per respective location."
  value = {
    for k, instance in azurerm_sql_server.instance : k =>
    {
      resource_group_name = instance.resource_group_name
      fully_qualified_domain_name = instance.fully_qualified_domain_name 
      name = instance.name
      location = instance.location
      is_primary = instance.location == var.primary_location
      admin_login = instance.administrator_login
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望在保存文件时将其重新格式化:

output "sql_server" {
    description = "A dictionary of objects containing various Azure Sql Server properties per respective location."
    value = {
        for k, instance in azurerm_sql_server.instance : k =>
        {
            resource_group_name         = instance.resource_group_name
            fully_qualified_domain_name = instance.fully_qualified_domain_name 
            name                        = instance.name
            location                    = instance.location
            is_primary                  = instance.location == var.primary_location
            admin_login                 = instance.administrator_login
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这里发生了两件事:

  • 应用了 4 个空格的缩进
  • 同一块内的所有分配均已对齐

网上有很多关于如何做到这一点的信息,但我一定是特别愚蠢,无法使其发挥作用,所以我想得到一个非常具体的答案,其中包含以下详细信息:

  • 使用什么 terraform 插件
  • 我的settings.json 中到底要写什么

我当前的用户settings.json 文件是:

{
    "workbench.startupEditor": "welcomePage",
    "editor.minimap.enabled": false,
    "terminal.integrated.scrollback": 1000,
    "git.enableSmartCommit": true,
    "editor.detectIndentation": false,
    "window.zoomLevel": -1,
    "diffEditor.renderSideBySide": false,
    "extensions.ignoreRecommendations": false,
    "workbench.colorTheme": "PowerShell ISE",
    "powershell.codeFormatting.whitespaceBeforeOpenBrace": false,
    "git.autofetch": true,
    "terminal.integrated.rendererType": "dom",
    "terraform.path": "C:\\Users\\mkharitonov\\.terraform\\terraform.exe"
}
Run Code Online (Sandbox Code Playgroud)

我的本地工作区 settings.json 文件是:

{
    "git.ignoreLimitWarning": true,
    "powershell.codeFormatting.openBraceOnSameLine": false,
    "powershell.codeFormatting.whitespaceBeforeOpenBrace": false,
    "editor.formatOnPaste": true,
    "editor.formatOnSave": true
}
Run Code Online (Sandbox Code Playgroud)

jas*_*ard 12

很简单,安装 PrettierHashiCorp Terraform制作的扩展。

如果需要,您可以进入 vscode settings.json 并添加 terraform 部分。

"[terraform]": {
    "editor.formatOnSave": true,
    "editor.defaultFormatter": "hashicorp.terraform",
    "editor.tabSize": 2, // optionally
  },
  "[terraform-vars]": {
    "editor.tabSize": 2 // optionally
  },
Run Code Online (Sandbox Code Playgroud)


小智 5

建议 terraform 代码使用 2 个空格,而不是制表符或 4 个空格。您可能会在样式约定中看到它

配置 VS 代码:

  1. terraform 应该安装在您的 Mac 上
  2. 编辑settings.json并添加以下内容:
"[terraform]": {
    "editor.formatOnSave": true
}
Run Code Online (Sandbox Code Playgroud)

此后,您的所有*.tf文件将在保存时自动格式化。


And*_*ini 2

macOS + VSCode 的解决方案

如果您在自动格式化方面遇到问题,可以尝试这样做: