核心是右下角语法必须设为sql(非mysql/pl/sql),且sqlparse须全局安装于系统python路径;否则高亮不启、ctrl+alt+f无响应。

Sublime Text 要让 .sql 文件一打开就高亮、按快捷键就能格式化,核心不在装多少插件,而在于两件事:右下角显示的语法名必须是 SQL(不是 MySQL 或 PL/SQL),且 sqlparse 必须被 Sublime 真正调用到——它不认虚拟环境里的安装,只找系统 Python 路径下的包。
右下角显示 Plain Text 或 MySQL 就说明高亮根本没启动
这不是插件失效,是 Sublime 没把文件当标准 SQL 处理。内置语法识别对 .sql 后缀不保证自动绑定,尤其新装或重装后。
- 打开任意
.sql文件 → 点右下角当前语法名(比如Plain Text)→ 选SQL(注意:不是MySQL、PL/SQL,它们 scope 不同,关键字匹配和括号配对逻辑都弱) - 切换成功后,右键该文件标签 →
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是否存在
Ctrl+Alt+F 格式化没反应?大概率是 sqlparse 没装对位置
SQLTools 默认用 sqlparse 做格式化器,但它不走 pip 的用户路径,也不读虚拟环境,只依赖系统 Python 下全局安装的版本。
- 先在终端执行
pip install sqlparse(不是pip install --user,也不是在 venv 里) - 确认
which python和which pip指向同一套环境;Windows 用户建议用py -m pip install sqlparse避免多 Python 版本冲突 - 打开
Preferences → Package Settings → SQLTools → Settings,确保含以下配置:"formatter": "sqlparse", "sqlparse_options": { "reindent": true, "keyword_case": "upper", "identifier_case": "preserve" } -
"identifier_case": "preserve"是关键:避免字段名、表名被强制转小写,否则在lower_case_table_names=0的 MySQL 生产库上直接报错 - 别加
--keywords-upper这类参数:sqlparse 解析器会崩溃,报Unexpected keyword
PostgreSQL / HiveQL 关键字着色不准?得切方言,不是换主题
标准 SQL 语法包对 $$ 块、QUALIFY、LATERAL VIEW 等方言关键词识别不了,这不是 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,格式化命令照样不会触发
最容易被忽略的是:SQLTools 的“连接”只是拼一条 psql -h xxx -U yyy 命令去调系统 CLI,它本身不存连接信息、不带驱动。所谓“连不上”,90% 是本地 psql 或 mysql 不在 PATH,而不是插件配置错了。











