sublime text 默认不识别 .toml 文件,必须先安装 package control 并手动绑定语法至 toml 插件(tamasfeher 版),否则高亮无效;安装后需通过状态栏设置或编辑 extensions.sublime-settings 实现永久绑定。

Sublime Text 默认不识别 .toml 文件,装完插件也不高亮,不是插件没装对,而是语言绑定根本没生效——这是 90% 用户卡住的地方。
必须先装 Package Control,否则所有 TOML 插件都无效
没装 Package Control,就等于没打开 Sublime 的插件入口。控制台命令执行失败很常见,尤其在以下场景:
- 系统开了代理或防火墙,导致
urllib.request.urlopen超时 - 输入法热键冲突(比如 QQ 拼音占用了
Ctrl+`),调不出控制台 - 粘贴的安装代码里有全角空格或换行符,Python 解析报错
正确做法:先手动解除输入法热键,再按 Ctrl+` 调出控制台,粘贴这段校验版代码(Sublime Text 3 稳定版适用):
import urllib.request,os,hashlib; h ='6f4c264a24d933ce70df5dedcf1dcaee'+'ebe013ee18cced0ef93d5f746d80ef60'; pf ='Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen('http://packagecontrol.io/'+ pf.replace(' ','%20')).read(); dh = hashlib.sha256(by).hexdigest();print('Error validating download (got %s instead of %s), please try manual install'% (dh, h))if dh != h else open(os.path.join( ipp, pf),'wb').write(by)
执行后无报错,且 Preferences → Package Settings 下出现 Package Control 项,才算成功。
只认准 tamasfeher 的 Toml 插件,别选 AdvancedToml 或 toml-syntax
Package Control 里搜 TOML 会出来好几个结果,但真正支持 TOML v1.0 规范(如点分键 server.port、嵌套表、数组内联表)的只有 Toml(作者:tamasfeher)。
-
AdvancedToml已多年未更新,对[[table]]数组表解析错误 -
toml-syntax用的是旧版.tmLanguage格式,在 Sublime Text 4+ 上可能加载失败 - 安装后无需重启,新建
test.toml文件,若仍是白色文本,说明语言绑定没走通——这不是插件问题
手动绑定 .toml 到 Toml 语法是必做步骤
即使插件装好了,Sublime 仍可能把 .toml 当作 Plain Text。右下角状态栏显示 Plain Text?立刻点击它:
- 选择
Open all with current extension as…→Toml - 该操作会自动写入
Packages/User/Extensions.sublime-settings,永久生效 - 如果仍不生效,按
Ctrl+Shift+P输入Reload Syntax Definitions刷新缓存
之后再编辑 Packages/User/Toml.sublime-settings,就能统一控制所有 .toml 文件的配色和缩进行为。
高级需求:配合 EditorConfig 或 LSP 做更严格的格式约束
单纯高亮不够?想让 .toml 文件也遵守项目级缩进、换行规则,或启用字段补全:
-
EditorConfig插件可读取项目根目录的.editorconfig,强制indent_style = space和indent_size = 2 -
LSP插件 +taplo-lsp服务能提供实时校验、悬停提示、跳转定义;但注意command字段必须填绝对路径,比如"/usr/local/bin/taplo-lsp",不能只写["taplo-lsp"] - 若用
LSP,务必确认当前文件 scope 是source.toml(按Ctrl+Alt+Shift+P查看),否则服务器压根不启动
最常被忽略的一点:Sublime 的语法识别完全依赖 syntax 绑定,而不是文件后缀本身——哪怕你把 config.json 改成 config.toml,只要没手动绑定,它就永远只是 Plain Text。











