sqltools本身不提供语法检测,需借助sublimelinter框架搭配sqlint或sqlfluff等linter工具实现;前者轻量快速报硬性错误,后者支持风格规范但依赖python环境。

SQLTools 本身不带语法检测,得靠 SublimeLinter 框架搭桥
很多人装完 SQLTools 就以为能自动标红语法错误,结果写错个逗号也没反应——因为 SQLTools 只负责高亮、格式化和执行,不提供实时语法校验。真要检测 SELECT 拼错成 SELCT 或括号不匹配,必须引入 SublimeLinter + 对应 linter 工具(比如 sqlint 或 sqlfluff)。
关键点在于:SublimeLinter 是个“壳”,它不自带规则;sqlint 是个命令行工具,自己不会往编辑器里塞红波浪线;二者靠 SublimeLinter-contrib-sqlint 这个“翻译器”连起来。
- 先装
SublimeLinter:Ctrl+Shift+P → 输入Install Package→ 搜SublimeLinter并安装(注意别选带横杠或后缀的变体) - 再装
sqlint:终端运行sudo gem install sqlint(macOS/Linux)或choco install sqlint(Windows + Chocolatey);验证用sqlint --version - 最后装桥接插件:
SublimeLinter-contrib-sqlint,同样通过 Package Control 安装
sqlint 和 sqlfluff 怎么选?看你是要报错还是提建议
sqlint 极简、快、只管基础语法(关键字、括号、分号),适合快速扫出硬性错误;sqlfluff 更重风格(比如强制 WHERE 换行、列名用反引号),但依赖 Python 环境且启动略慢。
如果你只是想避免执行时报 ERROR 1064,sqlint 够用;如果团队有 SQL 编码规范要落地,sqlfluff 更合适。
-
sqlint配置几乎为零:装完就生效,无需额外设置路径(只要它在$PATH里) -
sqlfluff必须pip install sqlfluff,且 SublimeLinter 的用户设置里要加:"paths": {"linux": ["/usr/local/bin"], "osx": ["/opt/homebrew/bin"]}(路径按你实际which sqlfluff输出填) - 两者都不支持嵌套 CTE 中的子查询级语法提示,遇到
WITH a AS (SELECT ...), b AS (SELECT ...)时,第二层可能漏检
为什么改了配置还是没波浪线?三个常见静默失败点
装完一堆东西却看不到任何下划线,不是插件没起作用,而是被几个隐蔽条件卡住了。
- 文件没识别成 SQL 语法:右下角显示的是
Plain Text或MySQL(不是SQL),SublimeLinter默认只对source.sql作用;手动点右下角 → 选SQL,或在Preferences → Settings – Syntax Specific里加"syntax": "Packages/SQL/SQL.tmLanguage" -
sqlint路径不在 Sublime 的环境里:GUI 启动的 Sublime 常常不继承 shell 的$PATH,导致它找不到sqlint;解决办法是用终端启动:subl .(macOS/Linux)或subl(Windows 命令行) - 插件被其他语法包劫持:比如你装了
Python插件,它可能把.py文件里的三引号 SQL 字符串块强行设为Python语法,此时SublimeLinter不会去查那块内容;临时禁用 Python 插件测试一下
SQLStyle 插件不存在,别被过时教程带偏
搜索“Sublime SQLStyle 插件”出来的很多教程,链接指向已 404 的 GitHub 仓库,或指向一个早于 2018 年就停止维护的同名旧包。它既不兼容 Sublime Text 4,也不适配当前主流 linter 架构。
现在真正可用、持续更新的组合只有两个:一是 SublimeLinter + sqlint(轻量直接),二是 SublimeLinter + sqlfluff(可配规则)。其他名字带 “Style” “Checker” “Validator” 的包,90% 是镜像、fork 或命名混淆项,装了反而可能冲突。
真正容易被忽略的是:linter 工具的版本与插件桥接器版本必须匹配。比如 sqlint 0.2.0 需要 SublimeLinter-contrib-sqlint 1.2.0+,旧版桥接器会静默跳过新 sqlint 的输出格式。











