sql-formatter 是 atom 中唯一开箱即用的 sql 专用格式化插件,无需额外依赖,支持主流方言并需手动设置右下角 grammar 为 sql 才生效。

Atom 本身不支持 SQL 格式化,必须靠插件,而 sql-formatter 是目前唯一能直接格式化 SQL 的专用插件;atom-beautify 和 prettier-atom 都不原生支持 SQL —— 后者甚至根本不识别 .sql 文件。
为什么 sql-formatter 是唯一可行选择
Atom 的主流格式化插件中:prettier-atom 只支持 JS/TS/HTML/CSS/JSON,对 .sql 文件完全静默;atom-beautify 虽然理论上可通过配置调用 sql-formatter CLI,但实际依赖链断裂(它默认不启用 SQL 支持,且不自动安装 sql-formatter 包),90% 的用户启用后仍无反应。
而 sql-formatter 插件专为 SQL 设计,开箱即用,无需额外 CLI 或 Node 模块:
- 安装后立即生效,不依赖
apm install其他包 - 支持常见方言:MySQL、PostgreSQL、SQLite、T-SQL(通过配置
language选项) - 快捷键
Ctrl+Alt+L(Win/Linux)或Cmd+Alt+L(macOS)可直接格式化选中文本 - 不与
prettier-atom或atom-beautify冲突——它只响应 SQL grammar,不注册core:save钩子
右下角 grammar 必须是 SQL,否则插件不触发
这是 80% 的“按了快捷键没反应”问题根源。Atom 不看文件后缀,只认右下角显示的语法名。即使你打开的是 query.sql,只要状态栏显示 Plain text 或 Text,sql-formatter 就会跳过处理。
手动修复方式:
- 点击右下角语法名 → 在弹出菜单中选择
SQL(不是MySQL或PostgreSQL,那些是其他插件提供的 grammar) - 若列表里没有
SQL,说明language-sql插件未安装:运行apm install language-sql - 验证是否生效:按
Ctrl+Shift+P输入Sql Formatter: Format,能执行即说明 grammar 正确
如何自定义缩进、关键字大小写等规则
sql-formatter 的配置通过 Atom 设置界面完成,路径为:Packages → sql-formatter → Settings。关键参数有:
-
Indent Size:设为2或4,影响SELECT/FROM等关键字的缩进层级 -
Keyword Case:可选upper(SELECT)、lower(select)或capitalize(Select) -
Language:影响函数名和操作符解析,如设为postgresql会正确处理ILIKE,设为mysql则支持反引号字段名 -
Comma Style:选first表示逗号前置(字段换行时逗号在上行末尾),last则在下行开头
注意:sql-formatter 不读取项目级配置文件(如 .sqlformat),所有设置必须在插件 UI 中完成。
别指望保存自动格式化,它只响应手动触发
sql-formatter 插件没有 Format on Save 开关,也不监听 core:save 事件。它只在你显式调用时工作(快捷键或命令面板)。这是设计使然,不是 bug。
如果你需要保存即格式化,目前 Atom 没有稳定方案。强行用 atom-beautify + 自定义脚本会引入依赖冲突和语法识别不稳定问题。更现实的做法是:
- 养成习惯:写完 SQL 后顺手按
Ctrl+Alt+L - 配合
language-sql的语法高亮,快速识别未闭合括号或漏分号 - 复杂查询建议先在数据库客户端验证逻辑,再粘贴回 Atom 格式化
真正容易被忽略的点是:SQL 格式化效果高度依赖原始语句的合法性。比如 SELECT * FROM users WHERE status = 'active' AND(结尾多一个 AND),sql-formatter 会直接报错退出,不会尝试“尽力而为”。务必确保语句语法完整再格式化。











