答案:sql高亮不生效主因是文件未被识别为标准sql语法,须手动选右下角“sql”(非mysql/pl/sql),再绑定.sql扩展名;若无sql选项则需用package control安装sublimelsp的sql包,并验证sql.tmlanguage存在。

右下角语法必须选“SQL”,不是MySQL或PL/SQL
高亮不生效,90% 是因为 Sublime 没把文件当标准 SQL 处理。右下角显示 Plain Text、MySQL 或 PL/SQL 就说明识别路径错了——这些语法 scope 不同,关键字匹配和括号配对逻辑都弱于顶层 SQL。
操作步骤很直接:
- 打开任意
.sql文件 → 点击右下角当前语法名 → 从菜单中选SQL(注意不是子类) - 切换成功后,右键该文件标签 →
Set Syntax: SQL→ 再点Apply to All Files with Same Extension - 若菜单里压根没有
SQL选项:按Ctrl+Shift+P→ 输入Package Control: Install Package→ 搜索并安装SQL(作者必须是sublimelsp,别装错同名旧包) - 验证:写一行
SELECT * FROM users;,SELECT和FROM应立刻变蓝/粗体;否则检查Packages/SQL/SQL.tmLanguage是否存在
sqlparse 必须全局安装,不能在虚拟环境里
Ctrl+Alt+F 没反应?大概率是 sqlparse 没装对位置。SQLTools 默认调用它做格式化器,但它不认 --user 安装路径,也不读虚拟环境,只找系统 Python 下的全局包。
正确安装方式:
- 终端执行
pip install sqlparse(不是pip install --user sqlparse,也不是在 venv 里) - 确认
which python和which pip指向同一套环境;Windows 用户建议用py -m pip install sqlparse,避免多 Python 版本冲突 - 装完后重启 Sublime,再测试快捷键
SQLTools 设置里 formatter 要明确指定为 sqlparse
即使 sqlparse 已装好,如果 SQLTools 的配置没指向它,格式化命令依然静默失败。
打开 Preferences → Package Settings → SQLTools → Settings,确保包含以下字段:
{
"formatter": "sqlparse",
"sqlparse_options": {
"reindent": true,
"keyword_case": "upper",
"identifier_case": "preserve"
}
}
关键点:
-
"identifier_case": "preserve"必须设,否则表名、字段名大小写被改写,可能触发 MySQL 或 Hive 生产环境报错 - 避免加
--keywords-upper这类参数,它会导致sqlparse解析崩溃,报Unexpected keyword - 如果遇到
OVER (PARTITION BY ...)错位,可临时关掉reindent,而不是硬调参数
不同数据库方言要用对应语法,不能全靠 SQL
PostgreSQL 的 $$ 块、Hive 的 LATERAL VIEW、Spark SQL 的 QUALIFY,标准 SQL 语法包着色不准——这不是 bug,是 scope 不匹配。
解决办法:
- 右下角点击语法名 → 选对应方言:
PostgreSQL、HiveQL、Spark SQL(如果有) - 若没有
HiveQL选项:下载Hive.sublime-syntax,放进Packages/User/目录,再通过View → Syntax → Open all with current extension as…绑定.sql - 别用
SQL (Improved)这类非官方包:更新停滞,遇到INSERT ON CONFLICT就高亮断掉,光标跳转也失灵
语法识别和格式化器是两套独立机制。哪怕 sqlparse 装好了,右下角还是 Plain Text,Ctrl+Alt+F 就不会响——得先让 Sublime 认出这是 SQL,再让它找到能干活的工具。











