【发布时间】:2020-09-25 02:33:13
【问题描述】:
我使用 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
考虑以下代码:
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
}
}
}
我希望在保存文件时像这样重新格式化:
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
}
}
}
这里发生了两件事:
- 应用了 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"
}
我的本地工作区 settings.json 文件是:
{
"git.ignoreLimitWarning": true,
"powershell.codeFormatting.openBraceOnSameLine": false,
"powershell.codeFormatting.whitespaceBeforeOpenBrace": false,
"editor.formatOnPaste": true,
"editor.formatOnSave": true
}
【问题讨论】:
-
该插件上的自动格式化程序 (ctrl+shift+i) 将运行
terraform fmt命令。这是导致规范风格的固执己见的零选项自动格式化程序。即使它使用 2 个空格进行缩进,我也不会偏离这一点。自以为是的自动格式化程序有一个好处,这意味着好的 Terraform 代码看起来总是一样的。 -
作业对齐怎么样?
-
是的,它会这样做。我建议在代码上运行格式化程序,这样您就可以看到它所做的更改。
-
嗯,我可以放弃 4 个字符。如果是这样的话,那我就准备好了,对吧?
-
插件格式化程序不起作用,我想这就是我发布这个问题的原因。我记得我使用的是插件,但没有格式化。我将在插件 github repo 中发布一个错误。
标签: visual-studio-code terraform