VSCode格式化SQL需三步:设语言模式为sql、安装插件并注册为默认formatter、开启formatOnSave;否则不响应快捷键、无高亮、缩进错乱。

VSCode 默认不格式化 SQL,三件事缺一不可:语言模式设为 sql、装对插件并注册为默认 formatter、开启 editor.formatOnSave。否则按 Alt+Shift+F 没反应、关键字不高亮、缩进全乱,不是你操作错,是 VSCode 根本没“认出”这是 SQL。
右下角显示 Plain Text?立刻切语言模式
这是 90% 格式化失败的起点。VSCode 不会自动把 .sql 文件当 SQL 处理,尤其新建文件或双击打开时。
- 点击右下角状态栏的
Plain Text→ 输入sql→ 选SQL(非 MySQL/PostgreSQL 等子类,基础高亮够用) - 快捷键更稳:
Ctrl+K M(Win/Linux)或Cmd+K M(macOS),再输sql回车 - 永久绑定后缀:在
settings.json加"files.associations": {"*.sql": "sql"} - 若仍不亮,检查是否被其他插件劫持(如某些数据库客户端会强制把
.sql关联到自己的语言模式)
装了插件却按 Alt+Shift+F 没反应?查 defaultFormatter ID
多数 SQL 插件(如 cdsama.sql-formatter、adpyke.vscode-sql-formatter、mtxr.sqltools)只提供能力,不自动注册为默认 formatter。VSCode 不知道该调谁。
- 打开命令面板(
Ctrl+Shift+P)→ 运行Preferences: Configure Language Specific Settings→ 选SQL - 填入准确的插件 ID:
"editor.defaultFormatter": "cdsama.sql-formatter"(注意大小写、连字符,ID 必须和扩展市场页面显示的完全一致) - 同时加
"editor.formatOnSave": true,否则每次都要手动触发 - 如果用了
SQLTools,必须关掉"editor.formatOnType": false,否则写WHERE后会意外换行打断输入
格式化后关键字小写、缩进奇怪、逗号跑前面?这不是 bug,是插件默认风格
不同插件默认行为差异极大:sql-formatter 默认大写 + 2 空格;pgFormatter 默认小写 + 4 空格;sql-beautify 默认保留大小写但可配 uppercase。
-
cdsama.sql-formatter可在settings.json加:"sqlformat": {"uppercase": true, "indent": 2, "commaStart": false} - 要精细控制(比如
SELECT大写但lower()小写),换prettier-plugin-sql,配"keywordCase": "upper"和"functionCase": "lower" - HiveSQL / SparkSQL 等方言别硬套通用插件——
sql-beautify对 HQL 有专项优化,pgFormatter专吃 PostgreSQL,混用大概率解析失败或格式错乱
连上数据库才能字段补全?那得用 SQLTools + 驱动,不是光装 formatter
纯格式化插件(如 sql-formatter)不连库、不校验、不提示字段名。想写 SELECT user_nam 就标红提醒拼错,必须走数据库连接路线。
- 装
SQLTools(作者mtxr) + 对应驱动(如SQLTools PostgreSQL Driver) - 右键资源管理器 →
Create Connection→ 手动填 host/port/database/user/password(密码明文存本地,别放生产库) - 连接成功后,在该连接下打开的查询编辑器才支持表名/字段补全;普通
.sql文件依然只有语法高亮和格式化 - 注意:Docker 或 SSH 隧道需先确保端口可达,插件不处理网络层转发
最常被跳过的其实是语言模式切换和插件 ID 的大小写匹配——很多人复制了配置却漏掉一个连字符,或者把 vscode-sql-formatter 写成 sql-formatter,然后花半小时排查输出面板日志。先盯住右下角,再核对 ID,比反复重装插件快得多。


















