VSCode 默认不支持 TOML 语法高亮,需安装 bierner.toml 插件实现基础功能;如需语义校验和严格格式化,须额外配置 taplo CLI 与 taplo-vscode 插件,并统一团队工具链。

VSCode 默认不支持 TOML 语法高亮
VSCode 原生不识别 .toml 文件,打开后是纯文本,没有颜色、没有缩进、没有错误提示。这不是你配置错了,是它真没内置支持——连 language-toml 都没 bundled 进来。
必须装插件才能让 VSCode “认出” TOML 是一种配置语言。别试 settings.json 里手动加 "files.associations",那只能改后缀映射,解决不了语法解析和校验问题。
- 只改
"*.toml": "toml"关联,高亮依然不生效(缺少语言服务器) - 插件要选带
toml语言 ID 且提供documentFormattingProvider的,不是所有标“TOML”的都支持格式化 - 推荐直接装
redhat.vscode-yaml不行——它只处理 YAML;得用专一的bierner.toml
装 bierner.toml 插件就能搞定基础功能
这是目前最轻量、最稳定、更新勤快的 TOML 插件,支持语法高亮、括号匹配、基础格式化(基于 taplo)、悬停提示,且不带额外 LSP 服务依赖,开箱即用。
安装路径:VSCode 左侧扩展面板 → 搜 bierner.toml → 点安装 → 重启编辑器(或重载窗口)。
- 安装后,打开任意
pyproject.toml或Cargo.toml,状态栏右下角会显示toml - 格式化快捷键
Shift+Alt+F生效(前提是没被其他插件抢占) - 如果格式化没反应,检查设置里
"editor.formatOnSave"是否为true,且"[toml]"下没被覆盖 - 该插件不提供语义校验(比如 key 重复、table 嵌套非法),那是 LSP 层的事,得另配
需要校验就得上 taplo CLI + taplo-vscode
bierner.toml 只做前端渲染,真正的语法/结构校验靠 taplo——Rust 写的 TOML 解析器,比 Python 的 tomlkit 更严格,也更接近官方 spec。
要启用校验,得两步走:装 CLI 工具 + 装配套 VSCode 插件。
- 先装
taplo:用curl https://get.taplo.dev | sh(Linux/macOS),或choco install taplo(Windows) - 再装插件
taplo-vscode(作者同为taplo团队),不是taplo或taplo-language-server等旧名 - 装完后,VSCode 会自动调用本地
taplo校验,报错直接标在行尾,比如Unexpected character '}'或Duplicate key 'version' - 注意:如果项目根目录有
.taplo.toml,它会按此配置校验规则;没这个文件就用默认规则
格式化行为差异:空格、换行、table 排序容易踩坑
bierner.toml 内置格式化和 taplo format 行为不一致,尤其在 table 分组和空行处理上。同一份文件,两种方式跑出来可能差三行空行,甚至 key 顺序不同。
-
bierner.toml格式化默认不重排 key,也不合并/拆分 inline table -
taplo format默认开启--reorder-keys,会把[tool.poetry]下的字段按字母排,可能打乱你手写的逻辑顺序 - 想禁用重排,得在命令行加
--no-reorder-keys,或在.taplo.toml里写reorder-keys = false - VSCode 里触发格式化时,实际跑的是哪个命令?看插件设置:
"taplo.formatting.executable"路径是否指向你装的taplo,而不是插件自带的简化版
真正麻烦的点不在装不装,而在你团队里有人用 taplo 格式化、有人只靠插件默认格式化——结果 Git diff 里全是空行和顺序变动。统一工具链比装插件难得多。











