必须选用“Terraform by int128”插件(作者int128),而非已弃用的同名旧插件;安装后需手动绑定.tf等后缀至Terraform语法,否则仍显示Plain Text;高亮正常后,补全与校验等功能还需LSP-terraform语言服务器支持。

装对插件、手动绑定后缀、配对语言服务器——三步之后 .tf 文件才能真正“活”起来,否则全是灰色文本或报错不提示。
怎么选对 Terraform 语法插件(不是所有叫 Terraform 的都行)
Sublime 默认不认识 .tf,装错插件等于白忙。必须用 Terraform by int128(作者 int128,不是单字 “Terraform” 包,那个已弃用),它兼容 Terraform 0.12+ 和 1.x;HCL 插件(mattly 维护)也能用,但资源块名(如 resource、module)高亮支持弱一些。
- 安装路径:Ctrl+Shift+P →
Package Control: Install Package→ 搜Terraform→ 点Terraform by int128 - 验证是否装对:打开命令面板,输入
Package Control: List Packages,确认列表里有Terraform by int128,没有Terraform Tools或孤立的Terraform - 别信右下角自动识别:哪怕你刚装完,打开
main.tf右下角仍显示Plain Text——这是正常现象,下一步必须手动绑定
为什么 .tf 文件打开还是灰色?绑定语法这一步不能跳
插件只提供解析能力,不自动接管文件后缀。不绑定,Sublime 就当它是纯文本。
- 打开任意
.tf文件,点击右下角Plain Text→ 选Terraform → Terraform - 立刻执行 View → Syntax →
Open all with current extension as…→ 再选Terraform → Terraform - 同理处理
.tfvars、.auto.tfvars:打开一个dev.tfvars→ 右下角点 →Terraform → Terraform→ View → Syntax → 同上操作 - 如果某次没生效,重启 Sublime;若仍无效,检查控制台(Ctrl+`)是否有
error loading syntax,说明插件加载失败
变量/模块块颜色太淡?不是插件问题,是主题没覆盖 scope
很多主流主题(如 Monokai、Adaptive)对 HCL 特有作用域支持不全,resource、output 看起来像普通标识符,不是 bug,是 theme 缺规则。
- 光标放在
resource上,Ctrl+Shift+P →Developer: Show Scope Name,看到类似meta.block.resource.hcl - 这个 scope 就是你要加颜色的目标;打开主题文件(路径通常为
Packages/User/Monokai Custom.sublime-color-scheme),在rules数组里加:
{
"scope": "meta.block.resource.hcl",
"foreground": "hsla(200, 70%, 60%, 0.9)"
}
- 别直接改
Packages/Theme - Default/...下的原版文件——它只读,改了也不生效;必须复制到Packages/User/并在用户设置中显式指定"color_scheme" - 更省事:换用专为 IaC 设计的主题,比如
ayu或Material Theme,它们默认就包含完整的source.hcl相关 scope 规则
补全和 lint 不工作?HCL 高亮 ≠ LSP 支持
装了 Terraform by int128 只解决高亮和折叠,terraform validate、变量自动补全、实时错误标红这些功能需要语言服务器(LSP)。
- 先装
LSP插件,再装LSP-terraform(它会自动下载并管理terraform-ls) - 本地必须已安装
terraformCLI,且运行terraform -v能输出版本(≥ 1.0) - 项目根目录要有
terraform { required_version = ">= 1.0" }块,否则terraform-ls启动失败 - 保存后没反应?看控制台有没有
LSP-terraform: server crashed,常见原因是terraform-ls二进制没执行权限(Linux/macOS 执行chmod +x ~/.local/share/lsp-terraform/terraform-ls)
最常被忽略的一点:LSP 功能依赖项目结构,单个 .tf 文件脱离目录上下文时,terraform-ls 往往拒绝服务——不是配置错,是它设计如此。











