SQL关键词大写本质是格式化器行为,需配置sqlparse_options中"keyword_case": "upper"并确保文件语法为SQL(非MySQL/PL/SQL),且sqlparse全局安装并与Sublime Python版本一致。

SQL 关键词大写提示本质是格式化器行为,不是语法高亮或补全功能
Sublime Text 本身不提供“输入 select 自动转 SELECT”的实时关键词大写提示。所谓“大写提示”,实际依赖的是 sqlparse 或 pg_format 这类外部格式化工具在执行 Ctrl+Alt+F 时的输出结果。语法高亮(如 SELECT 变蓝)和自动转大写是两件事:前者由 Packages/SQL/SQL.tmLanguage 控制,后者由格式化器配置驱动。
必须用 sqlparse_options 启用 keyword_case: "upper"
即使装了 SQLTools 并绑定了快捷键,若没显式设置格式化选项,关键词仍保持原样大小写。关键配置在:Preferences → Package Settings → SQLTools → Settings 中添加:
{
"formatter": "sqlparse",
"sqlparse_options": {
"reindent": true,
"keyword_case": "upper",
"identifier_case": "lower"
}
}
-
keyword_case必须设为"upper"(字符串,不是True或UPPER) - 如果只想要大写关键词、不改表名/字段名,
identifier_case设为"unchanged"更安全 - 修改后无需重启 Sublime,但需确保当前文件语法是
SQL(右下角显示“SQL”,不是“MySQL”或“PL/SQL”)
为什么按 Ctrl+Alt+F 没反应?先查 sqlparse 是否能被调用
格式化器静默失败最常见原因不是配置错,而是 Sublime 找不到 sqlparse:
- 运行
pip install sqlparse时,确认 Python 版本与 Sublime 内置 Python 一致(Sublime Text 4 默认用 Python 3.8+;若系统有多个 Python,建议用python3.8 -m pip install sqlparse) - 在
SQLTools设置中加"sqlparse_path": "/usr/local/bin/python3.8"(macOS/Linux)或"sqlparse_path": "C:\Python38\python.exe"(Windows),强制指定解释器路径 - 如果仍失败,在控制台(
Ctrl+`)里手动运行import sqlparse; print(sqlparse.__version__)验证是否可导入
别指望 PL/SQL 或 MySQL 语法包支持 keyword_case
如果你右下角选的是 PL/SQL 或 MySQL,sqlparse_options 里的 keyword_case 完全无效——因为这些语法定义不走 SQLTools 的格式化流程,它们压根不调用 sqlparse。必须满足两个前提才生效:
- 当前文件语法是
SQL(作者sublimelsp的那个包) - 格式化命令触发的是
sql_tools_format,不是内置的reindent或其他插件命令
真正容易被忽略的是:格式化器路径和语法识别必须严格匹配。哪怕 sqlparse 装对了,只要右下角显示的是 MySQL,按多少次 Ctrl+Alt+F 都不会把 select 变成 SELECT。











