sublime text 校验 toml 必须同时安装 tomlv cli、sublimelinter 主框架和 sublimelinter-contrib-tomlv 适配器;仅装语法高亮或 build system 无法触发校验,需手动绑定文件语法并显式配置 tomlv 可执行路径。

Sublime Text 要想真正校验 TOML,必须装三样东西
只装语法高亮插件或只配 Build System,tomlv 不会自动跑,保存时也不会标错——你看到的“0 errors”不是文件没问题,是根本没触发校验。
真正起作用的是这三者缺一不可:
-
tomlvCLI 工具(Go 写的官方验证器,go install github.com/BurntSushi/toml/cmd/tomlv@latest) -
SublimeLinter主框架(用 Package Control 安装) -
SublimeLinter-contrib-tomlv适配器(注意名字,不是toml-lint或SublimeLinter-toml)
装完后,在终端运行 tomlv --version 确认命令可用;再打开一个明显错误的 TOML 文件(比如漏掉引号、重复表头),保存看右下角是否出现黄色警告图标和行号旁的 error 提示。
文件后缀不标准?手动绑定语法是刚需
Sublime 不会读 [server] 或 title = "app" 来判断这是 TOML,它只看后缀。像 .env.toml、config、Dockerfile.toml 这类文件,默认仍是 Plain Text,高亮和校验全失效。
解决办法分两步:
- 打开该文件 → 点击右下角当前语言名(如 Plain Text)→ Open all with current extension as… → 选
TOML - 如果仍无效,编辑
Packages/TOML/TOML.sublime-syntax:在file_extensions列表末尾加一行- env.toml(注意缩进是两个空格),保存后按Ctrl+Shift+P→ 输入Reload Syntax Definitions
SublimeLinter 需显式配置 tomlv 路径
即使 tomlv 在终端能跑,SublimeLinter 也可能找不到它——尤其 macOS 和 Linux 上 PATH 常不继承 GUI 环境,Windows 上则可能路径含空格。
打开 Preferences → Package Settings → SublimeLinter → Settings,在 linters 下加:
"tomlv": {
"executable": "/usr/local/bin/tomlv"
}
路径怎么找?终端执行 which tomlv(macOS/Linux)或 where tomlv(Windows)。别留空,也别指望自动探测——实测中约 60% 的失败案例都卡在这一步。
为什么 tomlv 报错但程序能启动?
tomlv 只检查 TOML 语法规范:括号匹配、字符串引号闭合、表头唯一性、类型一致性(比如 port = "8080" vs port = 8080)。它不管业务逻辑。
例如:
-
tomlv会报错:Error: Type mismatch in [server] port. Expected: integer. Got: "8080" - 但不会告诉你:
database.url = "mysql://nonexistent"是否真实可达 - 也不会校验:
log_level = "DEBUGG"(拼错的枚举值)是否被你的应用接受
语义级校验得靠上层工具:比如 tiny-toml-validator(支持自定义 schema)、pre-commit 钩子集成、或项目自己的 make validate-config 脚本。别让 tomlv 承担它不该管的事。











