基于 sql-formatter 的 VS Code / Trae SQL 格式化插件,纯本地运行,数据不外传。
特性
- 📝 原生格式化集成:
.sql 文件里 Shift+Alt+F 直接格式化,Ctrl+K Ctrl+F 格式化选区
- 🖥️ 格式化面板:
Ctrl+Shift+J 打开网页版 UI,贴 SQL 点按钮格式化(和以前 Flask 版体验一致)
- 🎯 任意文件格式化:在
.xml / .java / .txt 里选中 SQL,Ctrl+Shift+K 格式化选区
- 🎨 多方言支持:MySQL / PostgreSQL / Hive / Spark / BigQuery / Snowflake / Trino 等 17 种
- ⚙️ 配置持久化:选项存在 settings.json,无需每次手动勾选
- 📊 状态栏切换方言:点击状态栏快速切换
使用方式
方式一:原生格式化(.sql 文件)
打开 .sql 文件 → Shift+Alt+F 格式化整个文档,Ctrl+K Ctrl+F 格式化选区。
方式二:格式化面板(任意位置)
Ctrl+Shift+J 或命令面板 → SQL Formatter: 打开格式化面板,弹出网页版 UI:
- 左栏粘贴 SQL,右栏显示结果
- 顶部选项栏:方言、关键字大小写、缩进宽度、逗号位置、缩进风格、SQL 间空行、Tab 缩进、紧凑运算符、分号前换行
Ctrl+Enter 格式化,一键复制 / 用结果替换输入
方式三:选区格式化(任意文件)
在 .xml mapper、.java、.txt 等文件里选中一段 SQL → Ctrl+Shift+K 或右键 → SQL Formatter: 格式化选区为 SQL
方言选择
| 场景 |
推荐方言 |
| StarRocks DDL(CREATE TABLE + TBLPROPERTIES) |
hive |
| StarRocks DML(SELECT / INSERT) |
mysql |
| PostgreSQL |
postgresql |
| Spark SQL |
spark |
| BigQuery |
bigquery |
配置项(settings.json)
{
"sqlFormatter.language": "mysql",
"sqlFormatter.keywordCase": "upper",
"sqlFormatter.indentSize": 2,
"sqlFormatter.useTabs": false,
"sqlFormatter.commaPosition": "after",
"sqlFormatter.indentStyle": "standard",
"sqlFormatter.linesBetweenQueries": 2,
"sqlFormatter.denseOperators": false,
"sqlFormatter.newlineBeforeSemicolon": false
}
| 选项 |
类型 |
默认值 |
说明 |
language |
string |
mysql |
SQL 方言,支持 17 种 |
keywordCase |
string |
upper |
preserve / upper / lower |
indentSize |
number |
2 |
缩进空格数 (1-8) |
useTabs |
boolean |
false |
用 Tab 缩进 |
commaPosition |
string |
after |
after(行尾)/ before(行首)/ tabular(对齐) |
indentStyle |
string |
standard |
standard / tabularLeft / tabularRight |
linesBetweenQueries |
number |
2 |
多条 SQL 间空行数 (0-5) |
denseOperators |
boolean |
false |
a=b 而非 a = b |
newlineBeforeSemicolon |
boolean |
false |
分号前换行 |
注:面板 UI 里的选项独立于 settings.json,方便临时调整;原生格式化和选区格式化读 settings.json 配置。
快捷键
| 快捷键 |
功能 |
适用范围 |
Shift+Alt+F |
格式化文档 |
.sql 文件 |
Ctrl+K Ctrl+F |
格式化选区 |
.sql 文件 |
Ctrl+Shift+J |
打开格式化面板 |
任意位置 |
Ctrl+Shift+K |
格式化选区为 SQL |
任意文件 |
Ctrl+Enter |
格式化(面板内) |
面板内 |
安装
从 .vsix 安装
Ctrl+Shift+X 打开扩展面板
- 点右上角
... → 「从 VSIX 安装...」
- 选择
sql-formatter-x.x.x.vsix
开发
# 需要 Node 20+(打包 vsce)
nvm use 20.20.2
npm install
npm run compile # TypeScript 编译检查
npm run package # esbuild 打包 + vsce 生成 .vsix
项目结构
├── package.json # 插件清单 + 配置项定义
├── tsconfig.json # TypeScript 配置
├── .vscode/launch.json # F5 调试配置
├── .vscodeignore # 打包排除规则
├── src/
│ ├── extension.ts # 插件主逻辑(格式化 Provider + 命令 + 状态栏)
│ └── formatPanel.ts # 格式化面板(Webview UI)
└── out/ # 编译产物
技术栈
- sql-formatter v12 — SQL 格式化引擎
- esbuild — 打包成单文件
- VS Code Extension API —
DocumentFormattingEditProvider + WebviewPanel
路线图
- ✅ v0.0.1:原生格式化 + 选区格式化 + 多方言
- ✅ v0.0.2:格式化面板(Webview UI)+ 任意文件选区格式化
- ⏳ v0.1.0:MyBatis XML 自动支持(提取
<select> 标签内 SQL,保护 #{} / <if> / <foreach> 动态标签)
- ⏳ v0.2.0:格式化质量增强(DDL 列定义注释对齐、TBLPROPERTIES 缩进优化)