应安装 hashicorp 官方 terraform 插件,确认发布者为 hashicorp,重启 vscode 并配置正确 terraform cli 路径,开启 editor.formatonsave 和 terraform.formatonsave,手动关联非标准 .tf 文件后缀。

官方 HashiCorp.terraform 插件是唯一推荐的起点,其他 HCL 或 Terraform 插件大概率会冲突、失效或不支持 HCL2 语义校验。
确认安装的是 HashiCorp 官方 Terraform 插件
VSCode 扩展市场里搜 “Terraform”,结果中必须认准发布者是 HashiCorp(不是 mattly、mauve 或任何带 “unofficial” 字样的)。这个插件同时提供 HCL 语法高亮、资源类型补全、provider 和 resource 文档内联提示,以及基础 LSP 支持。
- 安装后必须重启 VSCode——插件依赖的语言服务器(LSP)只在重启后初始化,否则右下角语言模式始终显示
Plain Text - 打开任意
.tf文件,右下角应显示HCL+ Terraform 图标;若显示HCL (unofficial)或JSON,说明插件未生效或被覆盖 - 不要同时启用
HCL(mattly)、Terraform(mauve)等第三方插件,它们会抢占 LSP 端口,导致跳转失败、诊断丢失
手动指定 terraform CLI 路径避免格式化/校验失败
插件本身不带 terraform 二进制,所有格式化、变量解析、模块跳转都依赖本地 CLI。如果 which terraform 返回空或路径错误,你会看到“command not found”、“No module found”或保存后无反应。
- 终端运行
terraform version确认已安装 v1.0+;若未安装,从 官网下载 解压后加入PATH - VSCode 设置中搜索
terraform.path,填入绝对路径(如/usr/local/bin/terraform或C:\Program Files\terraform\terraform.exe) - 该路径必须指向可执行文件本身,不能是目录;Windows 用户注意反斜杠要写成正斜杠或双反斜杠
editor.formatOnSave 和 terraform.formatOnSave 必须同时开启
仅开 editor.formatOnSave 不起作用——Terraform 插件有自己的开关逻辑。关掉任一选项,terraform fmt 就不会在保存时触发,缩进错乱、属性换行混乱等问题会持续存在。
- 设置中搜索
editor.formatOnSave→ 勾选 - 再搜索
terraform.formatOnSave→ 设为true - 还需确保
editor.defaultFormatter是HashiCorp.terraform,否则 VSCode 可能调用其他格式化器(比如 Prettier)导致报错 - 验证方式:改一行缩进,保存,看是否自动对齐;若没反应,检查输出面板里
Terraform标签页是否有terraform fmt: exit code 1类错误
非标准文件名(如 .infra.tf)需手动关联语言模式
插件默认只识别 *.tf 和 *.tfvars。遇到 main.infra.tf、backend.azure.tf 这类命名,VSCode 会当普通文本处理,补全、跳转、诊断全部失效。
- 打开该文件 → 点击右下角语言标识(如
Plain Text)→ 选 “Configure File Association for ‘*.infra.tf’…” - 输入
*.infra.tf→ 回车 → 从列表选Terraform - 更稳妥的方式是在工作区
settings.json中加这一行:"files.associations": {"*.infra.tf": "terraform", "*.tfvars.json": "terraform"} - 改完设置后,务必重新打开文件,或按
Ctrl+Shift+P→ 输入 “Developer: Reload Window” 强制重载
最容易被忽略的是插件重启和 CLI 路径绑定这两步——90% 的“没提示”“不跳转”“格式化无效”问题都卡在这儿。别信“装完就能用”,HashiCorp 插件对环境状态很敏感,多花 30 秒确认右下角图标和 terraform.path 值,比后面反复排查快得多。











