必须安装HashiCorp官方hashicorp.terraform插件,确认发布者为HashiCorp、ID正确,安装后重启VSCode;右下角显示HCL+Terraform图标,输入aws_instance.有属性提示,Ctrl/Cmd+Click可跳转var定义,否则需检查required_version块、terraform init完成状态、工作区包含所有.tf文件、路径无中文及非标准后缀手动关联。

必须装 HashiCorp 官方 hashicorp.terraform 插件,其他插件(如 HCL 或 Terraform Syntax Highlighting)只能做基础着色,无法提供资源参数提示、var. 跳转、module.source 悬停文档等核心能力。
怎么确认装对了插件?
VSCode 扩展市场搜 “Terraform”,只认准发布者是 HashiCorp 的那个——ID 是 hashicorp.terraform。安装后必须重启 VSCode,否则语言服务器(terraform-ls)不启动,右下角会一直显示 Plain Text 或 HCL (unofficial),所有智能功能都无效。
验证方式:
- 打开任意
.tf文件,右下角应显示HCL文字 + Terraform 图标 - 输入
aws_instance.,立刻弹出属性建议列表(如ami、instance_type) - 把光标放在
var.name上按Ctrl+Click(Windows/Linux)或Cmd+Click(macOS),能跳转到variables.tf
为什么补全/跳转/悬停始终不工作?
官方插件的语义能力严重依赖三个硬性前提,缺一不可:
- 项目根目录存在
terraform { required_version = ">= 1.0" }块(哪怕只是占位)——否则语言服务器直接拒绝加载 - 已执行过
terraform init,生成了.terraform/目录——插件靠它读取 provider schema 和 module 结构 - 所有
.tf文件都在同一个 VSCode 工作区打开——子目录单独开窗口,跨文件补全会断连
Windows 用户额外注意:父目录含中文字符会导致 terraform-ls 崩溃,表现为补全卡死、悬停无响应,需改用纯英文路径。
保存时 terraform fmt 不生效怎么办?
这不是插件“没反应”,而是两个开关和 CLI 路径都没配对:
-
editor.formatOnSave必须为true(VSCode 级通用开关) -
terraform.formatOnSave必须为true(插件自己的开关,仅此一项开启才真正触发terraform fmt) -
terraform.path必须指向可执行文件本身,例如"terraform"(PATH 中可用)或"C:/Program Files/Terraform/terraform.exe";写成目录或路径错误都会静默失败
验证方法:改一行缩进,保存,看是否自动对齐;若没反应,打开 VSCode 输出面板,切换到 Terraform 标签页,查是否有 terraform fmt: exit code 1 类错误。
非标准文件名(如 main.infra.tf)补全失效
插件默认只识别 *.tf 和 *.tfvars。遇到 .infra.tf、.backend.tf 这类命名,VSCode 会当普通文本处理。
解决方法:
- 打开该文件 → 点击右下角语言标识(如
Plain Text)→ 选 “Configure File Association for ‘*.infra.tf’” - 在弹出框中输入
*.infra.tf,回车后从列表中选择Terraform - 无需重启,但建议关闭再重开该文件确保生效
复杂点在于:如果项目里混用多种后缀(.tf、.tf.json、.env.tf),每个都要手动关联一次;且一旦误装了 HCL(mattly)等第三方插件,它们会抢占 LSP 端口,导致跳转失败、诊断丢失——这种冲突很难排查,最稳妥的做法是禁用所有非 hashicorp.terraform 的 HCL 相关扩展。


















