做了十几年日志分析和文本处理,电脑上装过的编辑器少说也有几十款,真正留到最后还天天在用的,Notepad++算一个。不少同事不理解,放着 VSCode、IDEA 这些功能强大的工具不用,为什么我处理日常文件时还是习惯性先打开它。我一般也不解释,直接现场演示:几百 MB 的系统日志拖进去秒开,接口返回的一长串 JSON 一键排版成树状结构,几万行小说的章节目录批量规整完毕。几次下来,问的人自己就去搜 Notepad++ 下载新版了。这篇文章就把我这些年用 Notepad++ 做排版和格式化的经验完整梳理一遍,从内置功能到插件配置,从正则替换到各种翻车记录,一次性讲明白。
1. 为什么排版格式化这类活儿,我一直首选 Notepad++
1.1 轻量启动,处理大文件不磨叽
格式化工作大多分三步:读入内容、整理结构、重新输出。编辑器本身越重,前两步的代价越高。VSCode 启动要几秒,打开稍大一点的文件还要建索引、加载插件,等你看到内容,耐心已经消耗一半。Notepad++ 打开文件几乎是瞬间的事情,几十 MB 的日志拖进去就进,不预加载、不建索引,把资源省下来给你真正要做的处理。
这不是说 IDE 不好。IDE 的强项是工程级语法分析、调试、重构,处理对象是"项目"。而排版格式化处理的大多是"文本片段"和"数据内容",属于轻量任务。拿火箭炮打蚊子,体验自然不理想。Notepad++ 的查找替换、正则、列编辑、插件体系都是围绕文本处理设计的,启动快、占用小、不擅自干预文件,这些特性在格式化场景里恰好全部是加分项。
1.2 格式化的本质,是把隐形结构变成一眼能看到的层次
很多人觉得排版、格式化是锦上添花的事,有也行,没有也行。我的经验恰恰相反:格式化是排查问题的第一步。JSON 少个键、XML 嵌套多一层、日志字段顺序不对,在压缩成一行或者挤成一团的状态下,肉眼根本看不出问题。格式化之后,结构立刻浮现,错位位置一眼就能锁定。
这也是我为什么强调搞懂原理比会用按钮重要。格式化工具帮你做的事,本质上是用缩进、换行、对齐、分隔符这些排版手段,把文本的隐藏结构显性化。理解这一点之后,遇到工具解决不了的奇葩格式,你也能靠手工排版思路自己拼出方案。Notepad++ 因为把这类工具集中在一个界面里,特别适合磨炼这套思维。你不需要在多个软件之间来回切,打开文件到处理完,始终待在同一个小窗口里。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. JSON 格式化:从一键排版到离线大文件方案
2.1 JSTool 插件,格式化 JSON 的第一选择
先解决工具安装。新版 Notepad++ 自带插件管理(Plugins Admin),菜单栏点"插件 -> 插件管理",搜索 JSTool,勾选安装,重启一下就能用。整个过程不需要联网,这比一堆在线 JSON 格式化工具靠谱得多。尤其在企业内部处理敏感数据时,数据不用离开本机,心理负担小很多。很多朋友问"有没有 json 格式化工具离线版",Notepad++ 加 JSTool 就是最标准的答案,装一次以后永远离线可用。
安装之后操作非常简单:
- 打开 JSON 文件
- 点菜单"插件 -> JSTool -> JSFormat"
- 编辑器自动把压缩、混乱的 JSON 整理成带缩进的层级结构
默认缩进是两个空格,如果团队规范要求四个空格,可以在 JSTool 配置里调整。另外建议顺手把 JSFormat 绑定一个快捷键,在"设置 -> 快捷键管理"里找到 JSTool 相关命令,自定义成 Ctrl+Alt+J 之类,高频操作用多了就是肌肉记忆。
2.2 格式化 JSON 最容易翻车的三种情况
第一种情况,中文变成了 \uXXXX。JSON 序列化时如果开启了 ASCII 转义,中文就会变成一堆 \u 开头的转义字符。这不一定是文件编码错了,更多是工具本身的输出策略。想让文件以中文形式直接显示,可以用 NppExec 跑一段 Python,用 json.load 读入后以 ensure_ascii=False 重新输出,或者看看插件有没有类似"不转义非 ASCII 字符"的选项。如果只是偶尔碰到,别在编辑器里硬凑正则去还原,用脚本是更省心的路。
第二种情况,点了 JSFormat 没任何反应。JSTool 处理非法 JSON 时非常沉默,不会弹错误框。常见坑包括行尾多了个逗号、引号不配对、括号数量不对。我的排查习惯是先把文件切到普通文本模式,肉眼扫一遍结构,或者用"编辑 -> 括号匹配"快速核对,把语法问题改掉再重新格式化。
第三种情况,文件太大,插件卡到界面假死。几十 MB 的 JSON 在编辑器内部做解析再序列化,很容易吃满内存。这已经不是插件能力问题,而是路线问题,下面讲替代方案。
2.3 NppExec 加 Python,专治超大 JSON
处理超大 JSON,我的固定方案是用 NppExec 调用系统 Python。NppExec 是 Notepad++ 的另一款老牌插件,装上之后可以在编辑器里直接跑命令行程序。它本质上是一个内置终端,能承载的玩法比单纯格式化多得多。
安装 NppExec 后,按 F6 打开执行窗口,或者从菜单栏走"插件 -> NppExec -> Execute",粘贴这段脚本:
bash复制npp_save
python -m json.tool "$(FULL_CURRENT_PATH)" "$(CURRENT_DIRECTORY)\formatted_$(FILE_NAME)"
点击 OK,Python 会把当前文件解析后,写入同目录下 formatted_ 前缀的新文件。json.tool 是 Python 自带的 JSON 格式化模块,处理大文件比插件稳定得多,还会顺带校验合法性,如果文件有问题,控制台会直接打出解析错误,定位问题比插件方式直观很多。
这里有个前提:Windows 命令行里要能直接执行 python。如果提示找不到命令,把脚本里的 python 换成 Python 安装目录的完整路径,比如 C:\Python311\python.exe。
另外,如果你熟悉 Python,结合 f-string 还能做更自由的"格式化输出"。想把每一行数据拼成固定模板、给目录加编号、把字段重排,写一个三五行的 Python 脚本丢给 NppExec 执行,比手工改几百行靠谱得多。这也是我推荐大家稍微学一点 Python 的原因,它在 Notepad++ 生态里的实用价值被严重低估了。
3. XML/HTML 与代码缩进:格式化全家桶进阶
3.1 XML Tools:排版的同时把合法性也查了
处理 XML 和 HTML,我固定装 XML Tools 插件,同样在插件管理里搜索安装。它的 Pretty print 功能可以把压缩的 XML 展开成缩进清晰的结构,默认选项之外还支持"格式化时保留空元素""属性单独占一行"等细节设置。
这个插件我最常用的功能其实是校验。一份 XML 标签是否闭合、属性值是否规范,跑一次格式化立刻可见。格式错乱的地方,往往就是结构不对的地方。对做接口联调的人来说,这等于多了一个免费的合法性检查器。你不需要单独打开浏览器开发者工具或者找在线校验网站,Notepad++ 一个窗口全部搞定。
3.2 Tab 与空格互转,换编辑器再也不用焦虑
代码缩进风格不统一,是协作项目里最容易爆发冲突的问题。组里一半人用 Tab 缩进,一半人用空格缩进,合并代码时 diff 永远是一片红。Notepad++ 的"编辑 -> 空白操作"菜单,提供了"TAB 转空格""空格转 TAB"等批量处理功能。全选内容,点一下转换,整个文件的缩进风格立刻统一。
这个操作在复制网上的代码片段、整理同事发来的混缩进文件时非常好用。比如前端项目要求两个空格缩进,你从某个仓库复制了一段全 Tab 的代码,粘贴进编辑器,选中全部内容,执行"TAB 转空格",再全选执行"空格转 TAB"?错了,需求是空格就只转到空格,方向别弄反。操作前先想清楚目标格式,能少走弯路。
同一个菜单下的"修剪行尾空格"我也高频使用。日志、网页复制文本、邮件表格,经常带着一堆看不见的行尾空格,导致 diff 全红、脚本比对误报。一键清理,干净舒服。做文本清洗的人如果还没用过这项,我真的建议立刻试一下。
3.3 编码和换行符:格式化前必须检查的地基
排版格式化的第一课不是学插件,而是看右下角状态栏。那里显示当前文件的编码和行尾格式。文件编码不对,后面所有格式化操作都可能在中文上翻车。
我的习惯顺序很固定。先看编码,如果显示 ANSI 或者不是预期编码,就用"编码 -> 转为 UTF-8 编码"转一道。有的文件带 BOM,也就是 UTF-8-BOM,某些老脚本、老插件会因此出错,我也优先转成无 BOM 的 UTF-8。再看换行符,Windows 文件一般是 CRLF,Linux 脚本一般是 LF,在"编辑 -> 行尾转换"里统一。地基打好了,再去跑正则、跑插件,基本不会莫名其妙碰到乱码和匹配失败。这个顺序我踩过不少坑才总结出来,建议当成肌肉记忆。
4. 手工排版硬功夫:列编辑、行操作与正则
4.1 列编辑模式:一次改动几百行的最快路径
Notepad++ 的列编辑是很多人用了好几年都没发现的隐藏技能。按住 Alt 键拖动鼠标,可以框出矩形选区,而不是普通的一整行选区。用这个方式,可以从带格式的文本里精准复制某一列的 IP 地址、时间戳或者金额,不用逐行操作。
另一个高频场景是批量加内容。比如几百行数据每行前面需要加一个序号,全选之后按 Alt+C 调出列编辑器,选择"插入数字",设定起始值和步长,点确认,所有行同一位置瞬间生成编号。这比手写脚本快,比逐行改更是快了一个数量级。列编辑模式配合列复制、列粘贴,能处理很多看似麻烦的表格规整需求。
4.2 行操作:排序、去重、删空行一条龙
"编辑 -> 行操作"菜单下面集合了一批数据处理利器:
- 升序 / 降序排序,适合整理关键词列表和字典条目
- 删除重复行,适合对大列表去重
- 删除连续重复行,适合只去掉紧挨着的重复项
- 合并行 / 拆分行,适合多行结构重排
我处理几千行关键词清单时,标准流程是:先删除空行,再去掉重复项,然后按字母排序,最后统一大小写格式。全部动作都在 Notepad++ 内完成,不需要导出到 Excel 再导回来。这套操作对运营、数据分析、配置维护类工作特别有用,是实实在在能提高日常效率的硬功夫。
4.3 正则替换:排版需求百宝箱
正则表达式是排版格式化的进阶核心。Notepad++ 的查找替换支持正则,几个高频套路列成表格供参考:
| 需求 | 查找目标 | 替换为 |
|---|---|---|
| 每行行首插入文本 | ^ |
- 或 1. |
| 删除行尾空白 | [ \t]+$ |
留空 |
| 多个空行压成一个 | \r\n\r\n\r\n |
\r\n\r\n |
| 删除空行 | ^\s*$ |
留空 |
| 统一数字章节号 | ^第\s*(\d+)\s*章 |
第 $1 章 |
用正则时,查找模式务必勾选"正则表达式"。遇到跨行内容,还要注意 . 默认不匹配换行符,需要勾选相应选项。Windows 文件行尾是 \r\n,处理多行结构时如果拿不准,先统一换行符再动手,不然容易留下孤立的 \r,后续怎么匹配都不对。
正则这东西,初看吓人,拆开其实就是"找规律、写匹配、做替换"三步。只要你能描述出目标格式和现状格式的差异,绝大多数排版问题都能用一个正则表达式解决。
4.4 实战:TXT 小说章节目录排版
具体说一个很多人问过的场景:TXT 小说章节目录排版。原始目录经常长这样:
text复制第一章 初入江湖
第二章 风起云涌
第 3 章 路见不平
第三卷 第四十三回:笑傲山林
乱七八糟,有全角空格、有半角空格、有中文编号还有数字编号。我的处理分三步。第一步,统一缩小差异,把"第 3 章"中间多余空白去掉,用正则 第\s+(\d+)\s*章 替换成 第 $1 章,让数字编号先统一。第二步,处理中文编号,按输出需求决定是转成数字还是单独加一个标签区分"卷"和"章"。第三步,如果要生成 Markdown 目录,用正则把每一行替换成 - 标题 的形式,一份可点击跳转的目录就出来了。
只要规律清晰,几万行目录几分钟就能规整好。正则不怕复杂,怕的是看不出规律。多练几次,这类文本排版对你来说就是流水线工作。
4.5 录制宏:重复排版动作一键重放
如果某种排版操作每周都要做,比如清理日志后做同样的替换,录制一个宏能省下大量时间。Notepad++ 的宏功能在"宏"菜单里,点"开始录制",然后正常做一遍操作,点"停止录制",保存成宏,之后一键播放。
我自己的习惯是把常用的清洗动作存成带名字的宏,比如"去行尾空格 + 删空行 + 排序",遇到新文件直接跑一遍。它比每次手工操作精准、快速,也不容易漏步骤。宏和正则配合使用,基本上覆盖了日常文本排版百分之九十的重复劳动。
5. 格式化翻车现场:常见问题与排查技巧
5.1 中文乱码,三步排查法
格式化后中文全乱,别着急,按顺序排查。第一步看状态栏编码,ANSI 就转成 UTF-8。第二步看有没有 BOM 头导致插件处理异常,多出来的特殊字符在文件开头肉眼可见,用"编码"菜单转成无 BOM 的 UTF-8 通常会解决。第三步,如果内容已经变成 \uXXXX 转义状态,用 NppExec 跑一段 Python 重新装载再输出,而不是在编辑器里硬凑正则。乱码问题九成出在编码和序列化策略上,跟排版工具本身关系不大。
5.2 保存时格式被改,认真查这几个开关
确实有不少人是被 VSCode、IDEA 的"保存时自动格式化"折腾到想用回 Notepad++ 的。VSCode 里搜索 formatOnSave,设置为 false 即可;IDEA 新版在"设置 -> 工具 -> 保存时执行"里取消勾选"重新格式化代码"。如果你用某些 AI 编辑器,保存时字符被自动删除、格式突然错乱,多半也是"保存时自动清理"这类默认行为在捣鬼,去设置里找"保存时"相关开关关掉就行。
Notepad++ 默认没有这类自动格式化动作,它不会在保存瞬间篡改文件。文件保存成什么样,就是你看到什么样。这也是我拿它处理配置文件更踏实的原因,格式化的主动权始终在自己手里。
5.3 通用排查顺序,一张表理清
格式化结果不对,如果前面几条都没解决,按这个顺序排查:
| 检查项 | 具体操作 |
|---|---|
| 编码 | 状态栏确认是否为 UTF-8 |
| 换行符 | 编辑 -> 行尾转换,统一 CRLF 或 LF |
| 数据合法性 | JSON/XML 语法是否真正正确 |
| 选择范围 | 是否只处理了选中的局部内容 |
| 插件兼容性 | 插件版本与 Notepad++ 版本是否匹配 |
把这张表存下来,遇到异常先过一遍,大多问题五分钟内能定位。这比每次上网重新搜"为什么格式化乱码"高效得多。
最后分享一点个人感受。很多人觉得排版是小事,不值得花时间研究,但真正做技术工作的人都清楚,每天消耗耐心的往往不是那些高大上的架构设计,而是一堆琐碎的文本整理。工具顺手、套路熟练,省下来的时间和好心情是实打实的。我自己最初也没想到,一个看着不起眼的编辑器,能把这么多格式化场景包圆。如果你想提升文本处理效率,我的建议很简单:从上面任一个小技巧开始,先练熟列编辑模式和 JSTool 快捷键,再慢慢啃正则。等这些动作变成肌肉记忆,你会发现处理日志、配置、数据的速度,比周围同事快出一大截。
