notepad++无原生sql格式化功能,必须依赖插件或外部工具;推荐nppexec调用pgformatter实现可靠一键格式化,支持多数据库语法、自动缩进与换行,需注意文件编码为utf-8并正确设置--type参数以适配t-sql或pl/sql。

Notepad++ 里没有原生 SQL 格式化功能
Notepad++ 本身不带 SQL 格式化能力,Ctrl+Alt+F 或菜单里的“格式化”选项对 SQL 无效。想一键美化 SQL,必须借助插件或外部工具集成——这是最常被忽略的前提。
用 NppExec + pgFormatter 实现真正可用的一键格式化
推荐组合:NppExec 插件调用命令行格式化工具 pgFormatter(跨数据库兼容性好,支持 MySQL/PostgreSQL/Oracle 风格)。它比老式插件如 “SQL Beautifier” 更可靠,不会把 SELECT * FROM t WHERE id = 1 AND status = 'A' 错切成多行 OR 条件。
- 先安装
pgFormatter:Windows 下直接下 release 包,解压后把pg_format.exe路径加入系统PATH,或在 NppExec 脚本里写绝对路径 - 在 Notepad++ 中打开
Plugins → NppExec → Execute...,粘贴以下脚本:
NPP_SAVE cmd /c "pg_format --keyword-case lower --identifier-case lower --reindent --wrap 80 "$(FULL_CURRENT_PATH)" > "$(FULL_CURRENT_PATH).fmt" && move /y "$(FULL_CURRENT_PATH).fmt" "$(FULL_CURRENT_PATH)" >nul"
- 保存为脚本名如
format_sql_with_pgformat,再绑定快捷键(比如Ctrl+Shift+Q) -
--wrap 80防止长字段名撑爆屏幕;--reindent是核心开关,漏掉就只是换行不缩进
遇到中文注释或特殊关键字时报错怎么办
pgFormatter 默认用 UTF-8 解析,但 Windows 记事本系编码(ANSI/GBK)打开的 SQL 文件会乱码报错 invalid byte sequence。不是工具不行,是编码不匹配。
- 先在 Notepad++ 中确认文件编码:右下角看是否显示
UTF-8,如果不是,用编码 → 转为 UTF-8 - 若 SQL 含
DECLARE @var INT(T-SQL)或/*+ USE_INDEX(t idx) */(Oracle hint),需加--type plsql或--type tsql参数,否则解析失败 - 避免用
/* */包裹大段注释后再格式化——某些版本的pgFormatter会误删换行,建议先删注释或改用--行注释测试
不想装外部工具?试试轻量替代方案
如果仅需基础换行缩进(不追求语法级重排),可用 NppExec 内置正则做简单处理,适合快速查看:
- 选中 SQL 文本 →
Search → Replace,勾选“正则表达式” - 查找:
\s+(AND|OR|FROM|JOIN|WHERE|GROUP BY|ORDER BY|HAVING|UNION|SELECT|INSERT|UPDATE|DELETE)\s+ - 替换为:
\r\n$1(注意末尾空格) - 再对逗号补行:
,\s+(?![^()]*\))→,\r\n(防括号内误切)
这招不能替代 pgFormatter,但临时救急够用。真正要读生产 SQL,还是得上带语法树解析的工具——毕竟 SELECT a,b,c FROM t WHERE x=1 AND y=2 手动调缩进,三分钟,格式化错一个括号,十分钟都找不出来。











