SQL文件不亮需先切换语言模式为SQL,再配置支持language server的插件(如SQLTools或mssql)及默认formatter(如cdsama.sql-formatter),否则高亮、补全、格式化均失效。

SQL文件不亮?先切语言模式再谈快捷键
VSCode 默认把 .sql 文件当纯文本,高亮、格式化、补全全失效——不是插件没装,是根本没启用 SQL 模式。快捷键再快也救不了这个前提。
实操建议:
- 点右下角状态栏的
Plain Text,搜SQL并选中(注意不是MySQL或PostgreSQL,基础高亮用SQL就够) - 更稳:按
Ctrl+K M(Windows/Linux)或Cmd+K M(macOS),输sql回车 - 永久绑定:在
settings.json里加"files.associations": {"*.sql": "sql"} - 若仍不亮,检查是否被其他插件劫持了
.sql关联(比如某些数据库客户端会强制设成自己的语言模式)
Shift+Alt+F 格式化没反应?默认 formatter 没设对
VSCode 自身不带 SQL 格式化能力,Shift+Alt+F 是调用当前语言的默认 formatter,不是“一键魔法”。装了插件但没设 provider ID,等于没装。
关键步骤:
- 装插件(如
SQL Formatter或vscode-sql-formatter) - 打开命令面板
Ctrl+Shift+P→ 运行Preferences: Configure Language Specific Settings→ 选SQL - 在弹出的 JSON 片段里加两行:
"editor.defaultFormatter": "cdsama.sql-formatter""editor.formatOnSave": true -
cdsama.sql-formatter是插件 ID,必须完全匹配——SQL Formatter插件实际用的是sqlformatter,vscode-sql-formatter用的是vscode-sql-formatter,大小写和连字符错一个就失效
Ctrl+Space 补全不出表名字段?language server 没跑起来
只装语法高亮插件,Ctrl+Space 不会弹出字段、函数、表名——智能补全依赖 language server,不是着色器。
常见卡点:
- 状态栏没出现连接图标(如 SQLTools 的小数据库图标)或 loading 动画
-
SELECT *后敲空格无字段列表,FROM后无表名下拉 - 打开开发者工具(
Ctrl+Shift+P→Developer: Toggle Developer Tools→ Console),看是否有spawn ENOENT(找不到mysql或psql命令)或connection refused -
mssql插件需手动开启:"mssql.enableIntelliSense": true -
SQLTools必须先建连接——哪怕只是本地sqlite3文件,否则补全引擎压根不加载
高亮关键词但不想改大小写?别硬调 formatter 配置
有些 formatter 插件(如 sqlformatter)默认把 SELECT、WHERE 转成小写,这不是 bug,是设计行为。想保持大写,得查插件是否支持 sql.format.uppercase 这类配置项。
更现实的做法:
- 先确认该插件文档是否提供大小写开关(多数轻量 formatter 不提供)
- 没有就换插件,比如
vscode-sql-formatter支持uppercase和keywordCase等细粒度控制 - 别试图改插件源码或强行 patch——升级后就丢,且容易破坏格式化逻辑
- 如果只是临时查看,可用
Ctrl+Shift+P→ 输入Transform to Uppercase手动转,但别混进自动化流程
真正容易被忽略的是:语言模式切换和 formatter provider ID 必须同时正确,缺一不可。少一个,快捷键就是摆设。


















