sql beautifier 插件不生效主因是语法未匹配或命令未绑定;需手动设sql语法、确认插件加载;大小写问题通过修改identifier_case为preserve解决;禁用auto_format_on_save防卡顿;调整indent_width和wrap_after优化排版。

SQL Beautifier 插件装了但没反应?检查 SqlBeautifier 是否真被激活
插件安装后不生效,八成是没配对命令绑定或语法识别没匹配上。Sublime 默认不会把 .sql 文件自动关联到 SQL 语法高亮,而 SqlBeautifier 依赖当前视图的语法类型来决定是否启用格式化逻辑。
- 手动设置语法:打开 SQL 文件 → 点击右下角语言名(如
Plain Text)→ 选SQL(不是MySQL或PL/SQL,除非你明确需要) - 确认插件已加载:按
Ctrl+Shift+P(Win/Linux)或Cmd+Shift+P(macOS),输入SqlBeautifier,看是否有SqlBeautifier: Format SQL命令出现 - 如果命令不显示,重装插件时别用 Package Control 的“Install Package”搜错名——正确包名是
SqlBeautifier,不是SQL Beautifier或sqlbeautify
格式化后库名、表名全变小写?改 sql_beautifier.sublime-settings 的大小写策略
默认配置会把所有标识符(包括库名、表名、字段名)转成小写,这在 MySQL 大小写敏感模式下可能直接导致查询失败,尤其当你的表名含大写字母且 lower_case_table_names=0 时。
- 打开设置:菜单
Preferences → Package Settings → SqlBeautifier → Settings - 修改关键项:
"keyword_case": "upper"(关键字大写)、"identifier_case": "preserve"(保留原始大小写) - 避免踩坑:别设成
"identifier_case": "lower",否则SELECT * FROM UserLog会被改成SELECT * FROM userlog,线上库直接报错 - 注意兼容性:某些旧版
SqlBeautifier不支持preserve,此时只能降级到 v1.2.4 或换用SQLTools配合外部 formatter
格式化卡住或崩溃?关掉 sql_beautifier.sublime-settings 里的 auto_format_on_save
这个选项看着方便,实则容易引发阻塞——尤其当 SQL 含长文本、嵌套注释或未闭合引号时,SqlBeautifier 的 parser 会 hang 住,导致 Sublime 整体无响应几秒甚至假死。
- 临时禁用:在设置里把
"auto_format_on_save": false,手动触发更可控 - 替代方案:用快捷键绑定(如
Ctrl+Alt+F)代替自动保存触发,出问题立刻Ctrl+Z撤回 - 性能提示:超过 500 行的 SQL 文件建议分段处理,插件对超长子查询和 CTE 支持不稳定,易丢括号或错排缩进
格式化后 JOIN 条件错位、WHERE 换行混乱?调 indent_width 和 wrap_after
默认缩进是 2 空格,但很多团队用 4;默认不换行,长条件堆在一行根本没法读。这不是 bug,是配置没对齐实际 SQL 风格。
- 调整缩进:在设置中加
"indent_width": 4,确保JOIN ON和WHERE子句缩进一致 - 强制换行:设
"wrap_after": 80(单位是字符数),让过长的IN (val1, val2, ...)自动折行 - 关键细节:
wrap_after对注释无效,如果 SQL 里有大段-- 这里说明业务逻辑...,它仍会撑宽整行,得手动拆
复杂点在于:不同数据库方言(PostgreSQL vs Oracle)对关键字和函数的解析规则不同,SqlBeautifier 是通用 parser,遇到 ARRAY[1,2,3] 或 EXTRACT(YEAR FROM date_col) 可能误判结构。这种时候,宁可少格式化,也别信自动结果。










