95%的HCL文件无高亮是因扩展名未绑定语法,点击右下角“Plain Text”→“Open all with current extension as…”选择HCL或Terraform语法即可解决,无需重启或改配置。

HCL 文件没高亮?不是插件没装,是语法没绑到 .hcl 扩展名上——95% 的情况只需点两下右下角就能解决,不用重启、不改配置文件。
点击右下角 “Plain Text” 绑定 .hcl 到 HCL 语法
Sublime 不靠插件自动识别扩展名,只靠后缀匹配语法定义。装了 HCL 或 HashiCorp Terraform 插件后,.hcl 仍显示 “Plain Text”,说明映射根本不存在。
- 打开任意
main.hcl文件,右下角看到 “Plain Text” 就是铁证 - 点击它 → 选 “Open all with current extension as…”
- 在弹出菜单里搜
HCL或Terraform,常见选项有:HCL(mattly 维护)、HashiCorp Terraform(官方)、Terraform(int128 版) - 如果菜单里没这些项,说明插件没装全:按
Ctrl+Shift+P→Package Control: Install Package→ 装HCL或HashiCorp Terraform
.tfvars 和 .auto.tfvars 也要单独绑定
很多用户绑了 .hcl 就以为万事大吉,结果 dev.tfvars 还是白底黑字。Terraform 生态里不同后缀默认不共享语法映射。
-
.tfvars和.auto.tfvars必须各自手动绑定一次:打开对应文件 → 点右下角 → “Open all with current extension as…” → 选同个 HCL/Terraform 语法 - 绑定后,Sublime 会自动把映射写进
Packages/User/Preferences.sublime-settings,内容类似:"extensions": ["hcl", "tf", "tfvars", "auto.tfvars"] - 别手写这个数组——路径大小写敏感,少个引号或逗号会导致整个设置失效
想让 resource、provider 块更醒目?改配色方案,不是改语法
语法插件只负责切分代码结构(比如把 resource 标记为 meta.block.resource.hcl),颜色由主题控制。Monokai、Adaptive 这类通用主题基本不定义 HCL 特定 scope,所以关键字看着像普通文本。
- 光标放在
resource上,按Ctrl+Shift+P→ 输入Developer: Show Scope Name,确认输出含meta.block.resource.hcl - 打开当前主题的自定义版(路径如
Packages/User/Monokai Custom.sublime-color-scheme),在"rules"数组里加一条:
{
"scope": "meta.block.resource.hcl",
"foreground": "hsla(210, 80%, 60%, 0.95)"
}
-
foreground值必须合法:写成#4a9eff、hsl(210, 80%, 60%)都行,但写成blue或漏掉括号会静默失效 - 改完保存,重新打开文件才生效(不是重载,是关闭再打开)
LSP 补全和 lint 不工作?HCL 插件 ≠ 语言服务器
装了 HCL 插件后,Ctrl+Space 没提示、terraform validate 错误不标红,这不是语法高亮的问题,是缺 LSP 客户端和语言服务器。
- 先装
LSP插件,再装LSP-terraform(它会自动下载并管理terraform-ls) - 确保本地已安装
terraformCLI,且terraform -v能正常输出;版本低于 1.0 可能被terraform-ls拒绝启动 - 项目根目录必须有
terraform { required_version = ">= 1.0" }块,否则terraform-ls启动失败,LSP 功能全挂 -
LSP-terraform不处理.hcl文件——它只监听.tf,所以.hcl文件即使语法高亮了,也不会触发补全或 lint
最易被忽略的一点:绑定语法后,scope 名是否真的变成 source.hcl 或 meta.block.resource.hcl,直接决定了后续所有定制(配色、LSP、折叠)能否生效。别只看颜色变了就以为搞定了。


















