必须安装terraform by int128插件、手动绑定.tf/.tfvars语法、配置lsp-terraform及terraform cli,三步缺一不可;否则文件灰色、无高亮、无补全、无格式化。

装错插件或漏掉手动绑定,.tf 文件永远是灰色的——这不是 Sublime 问题,是你没走完三步中的任意一步。
必须用 Terraform by int128,别碰单字 Terraform 插件
Sublime 默认不认 .tf,而 Package Control 里搜 “Terraform” 会列出多个同名包。只有 Terraform by int128(作者 int128)真正支持 Terraform 0.12+ 和 1.x 的完整 HCL 语法解析;Terraform Tools 和孤立的 Terraform 包已弃用,加载失败或高亮错乱是常态。
- 安装路径:按
Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜Terraform→ 点击Terraform by int128 - 验证是否装对:再按
Ctrl+Shift+P→Package Control: List Packages→ 确认列表里有Terraform by int128,且没有Terraform Tools或单独的Terraform - Windows 用户注意:
terraform.exe路径含空格(如C:\Program Files\...)时,后续 LSP 配置需显式设"shell_cmd": null,否则terraform-ls启动失败
.tf 和 .tfvars 文件打开仍是 Plain Text?绑定语法这步不能跳
插件只提供语法定义,不自动接管文件后缀。不手动绑定,Sublime 就当它是纯文本——右下角显示 Plain Text 就是铁证,和插件是否装好无关。
- 打开任意
main.tf→ 点右下角Plain Text→ 选Terraform → Terraform - 立刻执行
View → Syntax → Open all with current extension as… → Terraform → Terraform - 同理处理
.tfvars和.auto.tfvars:打开一个dev.tfvars→ 右下角点 → 选Terraform → Terraform→ 再走一遍Open all with current extension as… - 若仍不生效,按
Ctrl+`打开控制台,看是否有error loading syntax—— 说明插件未加载成功,需重装或检查 Sublime 版本兼容性(该插件要求 Sublime Text 4+)
resource、module 块颜色太淡?不是插件问题,是主题缺 scope 规则
很多默认主题(如 Monokai、Adaptive)根本没定义 meta.block.resource.hcl 这类 HCL 特有作用域,所以 resource 看起来和普通变量一样灰——改插件没用,得改配色方案。
- 把光标放在
resource上,按Ctrl+Shift+P→ 输入Developer: Show Scope Name→ 复制输出的 scope,例如meta.block.resource.hcl - 打开用户配色文件:
Packages/User/Monokai Custom.sublime-color-scheme(若无则新建),在"rules"数组里加一条:
{
"scope": "meta.block.resource.hcl",
"foreground": "hsla(210, 80%, 60%, 0.95)"
}
Packages/Theme - Default/ 下的原版文件——它是只读的,改了也不生效ayu 或 Material Theme,它们对 source.hcl 相关 scope 覆盖更全LSP 补全和 terraform fmt 不工作?高亮 ≠ 智能功能
Terraform by int128 只负责高亮和基础折叠,不提供校验、补全、格式化。要这些能力,必须额外配 LSP + LSP-terraform,且依赖本地 terraform CLI。
- 先装
LSP插件,再装LSP-terraform(它会自动下载并管理terraform-ls) - 本地必须已安装
terraformCLI,且运行terraform -v能输出版本(≥ 1.0) - 项目根目录必须有
terraform { required_version = ">= 1.0" }块,否则terraform-ls拒绝启动 -
terraform fmt集成需额外配置:要么用SublimeLinter-terraform,要么自建构建系统;单纯装语法插件不会触发保存即格式化
最容易被忽略的是:所有智能功能都依赖 .terraform/ 目录存在——没运行过 terraform init,语言服务器就“看不见” provider schema,补全永远为空。











