Notepad++ 无原生SQL格式化功能,Ctrl+Alt+F无效;推荐方案依次为:SQLinForm(手动导入匹配架构DLL并重启)、Poor Man's T-SQL Formatter(Plugin Manager安装、仅支持T-SQL)、NppExec+pgFormatter(跨数据库兼容最佳)。

Notepad++ 没有原生 SQL 格式化能力,Ctrl+Alt+F 对 .sql 文件完全无效——这不是你操作错了,是底层压根没注册该功能。
Poor Man's T-SQL Formatter 能用吗?怎么装才不白忙
能用,但必须满足三个硬条件:Notepad++ 是 x64 架构、插件名拼写完整(带撇号和空格)、安装走 Plugin Manager 而非拖 DLL。它在 v8.6+ 中兼容性尚可,但只适配 SQL Server 风格(T-SQL),对 /*+ INDEX(t idx) */ 这类 Oracle hint 会直接报错退出。
- 安装路径:Plugins → Plugin Manager → Show Plugin Manager → 搜索
T-SQL或Formatter→ 勾选Poor Man's T-SQL Formatter→ 安装后**必须重启 Notepad++** - 菜单项位置:Plugins → Poor Man's T-SQL Formatter → Format T-SQL code(注意不是“Format SQL”)
- 常见失败点:
Language → SQL没手动点一次,插件就识别不了关键字;选中内容含 HTML 注释或 JS 字符串,它会静默跳过
SQLinForm 是目前最稳的选项,但安装方式反直觉
它是唯一仍在持续更新、明确区分 x64/x86、且能稳定处理 500 行以上脚本的插件。但它不走 Plugin Manager,必须手动导入 DLL——而且不能直接丢进 plugins/ 目录。
- 先确认 Notepad++ 架构:帮助 → About Notepad++ → 看右下角标的是
x64还是x86(不是系统位数) - 去官网下载对应 DLL,如
SQLinFormNpp64.dll;然后设置 → 导入 → 导入插件 → 选中该 DLL → 重启 - 格式化前务必执行
Language → SQL,否则字段全挤在一行、WHERE条件缩进错乱 - 默认不保护中文注释和单引号内换行,建议预处理:用正则查找
(FROM|WHERE|JOIN|ON|SELECT)替换为\r\n$1,再查(,)(?!\s*['"])替换为,\r\n
NppExec + pgFormatter:跨数据库兼容性最好的方案
如果你写的 SQL 要跑 MySQL、PostgreSQL 或 Oracle,别碰专为 T-SQL 设计的插件。pgFormatter 是命令行工具,语法解析更严谨,不会把 AND status = 'A' OR type = 'B' 错切成多行 OR。
- 先装 pgFormatter:Windows 下下载 release 包,解压后把
pg_format.exe加入系统PATH,或在脚本里写绝对路径 - NppExec 脚本示例:
cd $(CURRENT_DIRECTORY) "pg_format" --type=postgresql --spaces=2 --wrap-after=80 "$(FULL_CURRENT_PATH)" -o "$(FULL_CURRENT_PATH)"
- 关键参数:
--type必须显式指定(t-sql/plsql/postgresql),否则默认按 PostgreSQL 规则处理,T-SQL 的GO分隔符会被忽略 - 文件编码必须是 UTF-8,否则中文注释可能被截断或乱码
真正容易被忽略的点是语言模式和架构对齐——哪怕插件本身没问题,Language → SQL 没点、Notepad++ 是 x64 但插件 DLL 是 x86,都会导致菜单灰色、点不动、或格式完崩掉。别急着重装,先看右下角架构标识和顶部语言栏状态。


















