必须安装HashiCorp官方插件、配置绝对路径的terraform.path、启用并验证Language Server启动成功,且对非标准.tf文件手动关联语言模式;否则补全、跳转、格式化等功能全部失效。

VSCode 装完 Terraform 插件后,90% 的人根本用不了补全、跳转或保存自动格式化——不是插件没装对,就是 terraform.path 没配准,或者 Language Server 压根没跑起来。
怎么确认装的是 HashiCorp 官方 Terraform 插件
扩展市场搜 “Terraform”,只认发布者是 HashiCorp 的那个。名字叫 “Terraform” 但发布者是 mattly、mauve 或带 “unofficial” 字样的,一律卸载。
- 错误现象:
resource "aws_后无补全、点provider "aws"跳不到定义、状态栏显示Plain Text或HCL (unofficial) - 第三方插件只做基础高亮,不支持
terraform fmt、go to definition、内联 provider 文档等关键能力 - 安装完必须点“重新加载窗口”,否则语言服务器不会初始化
为什么 terraform.path 必须配绝对路径
插件本身不带 terraform 二进制,所有 fmt、validate、init 都靠调你本地的 CLI。配错就全挂。
- 终端运行
which terraform(macOS/Linux)或where terraform(Windows),复制完整路径,例如/usr/local/bin/terraform或C:/Program Files/terraform/terraform.exe - VSCode 设置中搜索
terraform.path,在“工作区”设置里粘贴该路径——注意不是目录,必须是可执行文件全路径 - Windows 用户注意反斜杠要写成正斜杠或双反斜杠;macOS 上若用
tfenv,路径应指向~/.tfenv/bin/terraform,不是某个固定版本软链 - 常见坑:路径末尾多空格、WSL 下
which返回的是 Linux 路径但 VSCode 在 Windows 下启动
Language Server 没启动的典型表现和验证方法
即使插件装了、路径对了,LSP 也可能静默失败:没 hover 提示、变量跳转失效、module 的 source 路径悬停空白、实时诊断不标红线。
- 按
Cmd+Shift+P(macOS)或Ctrl+Shift+P(Windows/Linux),输入并运行Terraform: Restart Language Server - 打开底部面板 → “输出” → 下拉选
Terraform,看日志里有没有Server started successfully - 若报
address already in use,说明端口被占,可在settings.json中加"terraform.languageServerPort": 5001 - 确保项目根目录有
terraform { required_version = ">= 1.0" }块,且已执行过terraform init(生成.terraform/目录)
非标准文件名(如 .infra.tf)怎么启用 Terraform 功能
VSCode 默认只识别 *.tf 和 *.tfvars,其他后缀如 .infra.tf、.backend.tf 都得手动绑定语言模式,否则插件功能全部降级为纯文本。
- 打开一个
main.infra.tf文件,点击右下角当前语言标识(如Plain Text) - 选“配置文件关联…”,输入
*.infra.tf,回车后从列表中选择Terraform - 别忘了重启 VSCode,确保语言关联生效
最容易被忽略的是:editor.formatOnSave 和 terraform.formatOnSave 必须同时为 true,且 editor.defaultFormatter 必须设为 hashicorp.terraform——少一个,terraform fmt 就不会在保存时触发。











