Notepad++ 宏无法真正实现一键 JSON 格式化,因其仅记录操作动作而无法捕获插件校验逻辑、处理 BOM/注释/编码等前置问题,且依赖语言模式和外部工具稳定性;推荐用 NppExec 调用 python -m json.tool 或 PowerShell 批量处理,并手动确认语言模式为 JSON。

Notepad++ 不能用宏录制实现真正的一键 JSON 格式化
宏录制在 Notepad++ 中只能记录按键和菜单点击动作,无法捕获插件执行时的内部校验逻辑或外部命令调用。JSON Viewer 的 Format JSON 功能一旦触发,会立即调用系统级解析器——如果当前文本不合法,它不会“尝试修复”,而是直接清空内容或弹出错误;而宏对此毫无感知,更不会帮你提前清理 BOM、删注释或转编码。录完再播,大概率就是“点一下 → 变空 → 不知道哪错了”的循环。
为什么你录下来的宏点一次就失效
常见失败场景包括:
- 宏里录了
Ctrl+A全选,但实际文档开头有 BOM 或不可见字符(比如从微信粘贴),JSON Viewer 解析失败后清空,宏重放时面对的是空文档 - 宏里包含
Ctrl+Alt+Shift+M(JSON Viewer 快捷键),但当前语言模式仍是Normal text或JavaScript,插件菜单项灰掉,宏执行到这步就卡住或跳过 - 宏里录了“编码 → 转为 UTF-8 无 BOM”,但 Notepad++ 实际没执行成功(比如菜单路径不对、版本差异),后续格式化仍乱码
- 宏依赖 JSTool 的
Ctrl+Alt+M,但它只靠正则匹配缩进,遇到"msg": "line1\nline2"这类含换行符的字符串,排版直接塌陷,且宏无法判断是否排错
真能“一键”做的替代方案(不靠宏)
想省去重复操作,优先走可配置、可复现的路径:
- 用 NppExec 插件写一条命令,调用本地
python -m json.tool:支持指定缩进、生成新文件、不覆盖原内容,且失败时会在输出栏报具体错误位置 - 在
运行 → 运行...(F5)里保存命令模板:python -m json.tool "$(FULL_CURRENT_PATH)" > "$(CURRENT_DIRECTORY)\formatted_$(NAME_PART).json",设快捷键,比宏更稳 - 对多文件批量处理,别在 Notepad++ 里切标签页手动点——直接用 PowerShell 脚本遍历目录:
Get-ChildItem *.json | ForEach-Object { python -m json.tool $_.FullName > "$($_.DirectoryName)\formatted_$($_.Name)" }
最常被忽略的前置动作:不是点 Format JSON,而是先按 F7 打开“语言”面板
确保当前文档语言是 JSON(不是 JavaScript、JSON5 或空白),否则 JSON Viewer 插件可能拒绝响应。这个动作没法被宏可靠还原——有些版本里它藏在右下角状态栏点击,有些要走菜单 语言 → J → JSON,路径不统一。与其赌宏能点对,不如养成习惯:格式化前先看右下角是否显示 JSON,不是就手动切过去。


















