先手动切换右下角语法为sql(非mysql/pl/sql),再右键标签选“apply to all files with same extension”;若无sql选项,则用package control安装sublimelsp的sql包。

右下角显示Plain Text?先让.sql文件认出SQL语法
Sublime 默认不把 .sql 文件当 SQL 看,高亮失效的第一原因是它根本没走 SQL 语法解析流程。点右下角当前语言名(常是 Plain Text 或 MySQL),选 SQL —— 注意不是 MySQL、PL/SQL 或 PostgreSQL,那些是子类,自带不同词法规则,但默认不启用完整高亮支持。
切换后右键文件标签 → Set Syntax: SQL → Apply to All Files with Same Extension,这样所有 .sql 文件下次打开就自动用标准 SQL 模式。
如果菜单里压根没有 SQL 选项,说明缺核心语法包:按 Ctrl+Shift+P → 输入 Package Control: Install Package → 搜索并安装 SQL(作者必须是 sublimelsp,别装错旧包)。装完检查 Packages/SQL/SQL.tmLanguage 是否存在。
SQLTools 连不上 PostgreSQL?不是插件问题,是连接参数拼错了
SQLTools 本身不存连接信息,它只是把你在设置里填的 host、port、database、username、password 拼成一条 psql -h xxx -U yyy -d zzz 命令去调系统 psql。连不上,90% 是这条命令在终端里都跑不通。
先确认本地 psql 就绪:
-
psql --version能输出版本号 -
which psql(macOS/Linux)或where psql(Windows)返回路径,且该路径已加进系统PATH - PostgreSQL 默认端口是
5432,别写成3306(那是 MySQL 的) - 密码含
$、'、"等特殊字符时,配置文件里得用单引号包裹,比如'my$p@ss'
配置入口:Preferences → Package Settings → SQLTools → Settings,填入类似这样的结构:
{
"connections": [
{
"name": "local_pg",
"driver": "postgres",
"host": "localhost",
"port": 5432,
"database": "mydb",
"username": "postgres",
"password": "yourpass"
}
]
}
保存后按 Ctrl+Shift+P → SQLTools: New Connection 创建连接,再右键 SQL 文件 → SQLTools: Connect to… 选它。状态栏出现绿色 Connected 才算真正激活补全和执行能力。
Ctrl+B 执行 SQL 却报 command not found?Build System 路径没对上
SQLTools 连接成功后,右键 → SQLTools: Execute Query 是最稳妥的执行方式。但如果你偏好快捷键 Ctrl+B(即 Build System),就得手动配一个能调通 psql 的构建定义。
菜单 Tools → Build System → New Build System…,填入:
{
"cmd": ["psql", "-d", "mydb", "-f", "$file"],
"selector": "source.sql",
"shell": true,
"working_dir": "$file_path"
}
关键点:
-
mydb要替换成你实际的数据库名;若需指定 host/user,加-h localhost -U postgres -
$file是当前文件绝对路径,必须带引号(JSON 格式要求),别写成$file_path或漏掉 -
shell: true在 Windows 下必须设为true,否则找不到psql.exe - 保存为
PostgreSQL.sublime-build,再在Tools → Build System中选它
执行后错误输出会出现在底部面板,且 file_regex 若配置得当(如 "^(.*?):([0-9]+):([0-9]+):(.*)$"),点击错误行就能跳转定位。
PL/pgSQL 函数写起来费劲?得单独开语法模式
标准 SQL 语法模式对 CREATE FUNCTION … LANGUAGE plpgsql 支持有限,DECLARE、RAISE NOTICE、RETURN QUERY 等关键字不会高亮,补全也基本失效。
解决办法:装 PostgreSQL Syntax 插件(不是 SQL 包里的子项),然后打开 PL/pgSQL 文件 → 右下角点语法名 → 选 PostgreSQL/PLpgSQL。这个模式专为存储过程设计,能正确识别块结构、变量声明和异常处理块。
注意:它和 SQL 模式互斥,同一个文件不能同时享受标准 SQL 补全 + PL/pgSQL 高亮。日常写查询用 SQL,写函数时手动切过去更稳。
真正容易被忽略的是:SQLTools 的补全只在“已连接”状态下生效,而 PL/pgSQL 语句里大量依赖运行时元数据(比如表字段名),所以即使语法高亮了,补全仍可能为空——除非你连的是真实数据库,且该函数引用的表确实存在。











