Notepad这名字在Windows用户心里基本等同于“最强记事本替代品”但很多人拿它写完代码就关掉了根本没碰过它的排版能力。实际上我这些年处理txt小说、清洗日志、批量整理资产清单、做分镜文本脚本几乎全靠Notepad在撑。今天这篇就把我积累下来的Notepad高效排版经验全部摊开讲从编码处理、正则批量替换、列编辑模式、宏录制到插件选型再到几个完整的实战案例全部拉通。如果你手里经常有纯文本格式的活要干比如整理电子书目录、批量修改文件名清单、给剧本或分镜表做格式化、清理从网页复制下来的乱码文本那这篇文章可以直接帮你省掉大量重复劳动。初学者也能看懂每步我都会解释为什么这么做不只是扔命令给你。1. 排版前必须先解决的三个基础问题很多人排版排到一半发现替换不生效、保存后又乱、预览和实际不一致九成问题出在最基础的三个设置上不先解决它们后面全是坑。1.1 编码识别的优先级Notepad打开一个文件时如果内容出现中文乱码先别急着换软件用右下角状态的编码信息判断。最常见的三种编码是UTF-8无BOM、UTF-8带BOM、ANSI也就是GBK在中文Windows上的别名。UTF-8带BOM在文件头会多出三个字节很多老旧脚本处理时会报错但Windows记事本默认保存格式就是它。Notepad右下角会显示当前编码点一下可以重新编码转换菜单栏里的“编码”选项也能操作。我处理txt书籍时见过最多的情况是从网上下载的章节txt明明是GBK编码你直接双击用记事本打开没问题但粘到Notepad里再保存成UTF-8如果没做“转为UTF-8编码”而是直接另存文件就双重编码错乱了表现为中文变成菱形问号。这里的关键操作是打开乱码文件后菜单栏选“编码” - “使用ANSI编码读取”先让内容正常显示再“转为UTF-8编码”最后保存这样文件才是干净的UTF-8。这一步搞错后面所有正则替换都是白费功夫。1.2 换行符统一Windows的换行符是CRLF\r\nLinux是LF\nmacOS老版本是CR\r。混用换行符会导致Notepad状态栏出现“混合换行符”提示正则里匹配行尾时行为不一致尤其在批量替换段落、合并行时会出莫名其妙的结果。在“编辑” - “行操作”里可以统一切换。另外更直接的方法是替换对话框里把“扩展”模式打开快捷键AltL然后把\r\n统一替换成\n或反过来。实际操作中我推荐先通过菜单“编辑 - 档案格式转换 - 转为Windows格式”来统一成CRLF再做排版因为大部分Windows生态工具对CRLF兼容性最好后续导入Word、Excel也更少遇到换行错误。1.3 视图模式与自动换行排版时最怕文字被自动换行切成视觉上的碎行搞得正则匹配时根本看不清结构。点击菜单“视图 - 自动换行”关闭自动换行然后配合“视图 - 显示符号 - 显示行尾符和缩进符”能清楚看到每一行的真实边界和缩进情况。做表格对齐或者固定宽度排版时我还会打开“视图 - 显示标尺”方便肉眼判断每行字符宽度。提示打开“显示所有字符”后空格会显示成点、制表符显示成箭头看着像乱码但这是排版时最好的参照物能一眼揪出全角空格和半角空格混用的问题。2. 正则表达式让排版事半功倍的底层技能正则表达式Regex是Notepad排版的灵魂。没有它你只能一行行手工排有了它批量处理上千行文本也只需要几次查找替换。2.1 正则替换的入口和基础语法Notepad里按CtrlH打开替换对话框搜索模式选择“正则表达式”。注意它用的是标准ECMAScript正则语法部分高级特性比如后行断言lookbehind在旧版本里可能不支持新版6.x以上支持但语法略有差别。替换时$1、$2代表第一个、第二个捕获组查找时用圆括号()圈捕获组用\1、\2反向引用捕获内容。几个高频正则片段我在排版时经常用到匹配所有空白行^\\s*$替换为空字符串就能一键删掉文档里所有空行。匹配行首缩进的空格^\\s替换为空再重新统一缩进。匹配行尾多余空格\\s$替换为空清理从网页复制文本时最容易留下的尾部空格。合并被硬回车打断的段落把\\r\\n\\r\\n替换为__PARA__先把段落分隔符换成临时占位符再把单个\\r\\n替换为空格最后把__PARA__换回\\r\\n\\r\\n。这样能把网文复制出来的碎行重新拼接成完整段落。2.2 用正则给章节标题批量加标记整理txt小说目录是我做的最多的排版场景之一。假设原始文本里章节标题分布在各种奇怪的位置有一些是“第一章 初入江湖”有一些是“001章 风起”还有一些直接是“第十二章xxxx”没有空格。目标是把所有章节标题统一格式并且提取成目录。先定义特征中文章节号加“章”字开头的行一般形如第[一二三四五六七八九十百千万0-9]章。查找式可以写成^(第[一二三四五六七八九十百千万0-9]章\\s*.*)$替换为## $1这一步会把所有匹配到的章节行自动变成两级标题格式。之后再用“搜索 - 标记”功能把^## .全部标记出来点“复制带标记的行”直接粘贴就能得到一份干净章节列表也就是txt的章节目录。如果还要生成TOC文件只需把标记结果另存即可。这个过程不到一分钟手工做会疯掉。2.3 正则匹配不到内容时的排查顺序正则替换经常出现“明明看着对就是不生效”的情况。我踩坑总结出的排查顺序是先看搜索模式是不是“正则表达式”很多人切换后忘点单选还在普通模式下再看是不是全角符号查找正则里的括号和引号必须半角然后看匹配范围如果只选中了一段文字默认只在选区里替换CtrlH对话框里有个“仅在选区中”的选项容易被误勾最后检查转义层级Notepad里反斜杠有时需要双写。注意在替换框里$符号在正则替换中代表字符串结束位置。如果你要替换的内容本身包含美元符号记得写成\\$否则替换结果会莫名其妙缺失内容。3. 列编辑模式多行批量修改的正确打开方式正则擅长按内容匹配但有些排版任务是纯位置驱动的比如给多行同一列位置加上统一前缀、把几列文字调整对齐、给每行末尾加逗号。这种场景用列编辑模式最快。3.1 列选择与块操作按住Alt键再用鼠标纵向拖选就能进入列选择模式。在列选择状态下输入字符会自动在所有选中行同一列位置插入按Delete删除所有选中列用ShiftAlt方向键也可以实现键盘操作。这比逐行复制粘贴快一个量级。一个我常用到的例子批量给文本清单加编号。假如有几十行资产文件名character_01.png character_02.png weapon_01.png weapon_02.png现在要在行首加上“ID:”只需Alt纵向拖选第一列直接输入“ID:”所有行同时出现。同样要在行尾统一加分号从行尾纵向选中所有末尾位置输入分号即可。3.2 纵向对齐的极限操作Notepad的列模式不加空格自动对齐想要右对齐或者按固定宽度对齐可以搭配宏和正则先统计每行长度然后统一在行首补齐空格。比如最长行是20个字符对每个短行执行“行首添加足够的空格”。写一个正则替换^(.{1,19})$替换为$1然后用列模式删除多余空格。不过更优雅的做法是直接借助插件后面讲插件时展开。3.3 列插入递增数字给大量文本块加序号如果行数差距较大手工敲序号完全不现实。我惯用的方法是先用列编辑模式在某列位置插入一列占位符比如连续的0然后借助Python Script插件或“编辑 - 列编辑”功能。Notepad自带一个列编辑对话框菜单“编辑 - 列编辑”或AltC快捷键可以生成从指定数开始的递增数字并选择进制、步长、是否补零。这个功能在排版题录、资产编号、分镜镜头号时极其好用。4. 用Notepad快速生成章节目录与正文结构调整前面提了正则标记章节这里完整展开一个常见的“txt章节目录排版”实战流程是我个人处理小说和文档时用的标准套路已经稳定用了好几年。4.1 提取章节列表并生成树形目录流程分三步第一步复制全书正文进Notepad按CtrlH搜索模式为正则查找^(第[一二三四五六七八九十百千万0-9]章\\s*.*)$替换成$1把章节标题统一加一个标记前缀方便后续识别。第二步用“搜索 - 标记”功能查找正则^.*$勾选“标记”点“全部标记”再点“复制标记内容”打开新文档粘贴就得到了所有章节标题的纯文本列表。第三步如果想要缩进层级比如卷 章 节可以再做一轮正则。卷标题可以匹配第[一二三四五六七八九十百千万]卷单独提出来并加一级缩进章节名则加二级缩进。替换成带缩进的目录格式后直接另存为“目录.txt”。4.2 清理正文中的页码、广告和无关行网上下载的txt经常混有“顶点小说网”“最新网址”等广告行排版时必须清掉。用正则批量处理时最稳妥的思路是先观察广告行的特征通常它们不具备章节文本特征且常年重复出现。用“替换”把所有广告行替换为空^.*(顶点小说网|最新网址|笔趣阁).*$替换为空即可。但要注意如果广告行里包含特殊正则字符直接用它作为匹配串可能会误伤建议用“转义”按钮自动转义或者分段分特征来匹配。页码类似用^\\s*\\d\\s*$匹配纯粹数字行直接清理。4.3 合并断行和拆分超长段落不同来源的txt对段落换行的处理完全不一致。有的每句一行有的每行固定字数就换行有的段落之间多个空行。处理“每句一行”的情况我用占位符法先把。\\r\\n替换为。__BREAK__再把\\r\\n替换为空最后把__BREAK__还原成换行。这样能把按句断行的文本拼回自然段又不把本来就该断开的地方合并掉。对于超长段落需要按一定宽度硬换行的话我一般用文本编辑器的“文档格式”辅助或者写一段Python Script插件脚本来按指定字符数切行而不是正则硬啃因为正则做宽度切行容易破坏中文标点的语义。5. 宏录制把重复排版操作变成一键执行排版工作最烦人的不是复杂而是高频重复。连续十个文件要执行相同的替换手动一个个做会怀疑人生。宏就是干这个的。5.1 宏的录制与保存录制宏的入口在“宏 - 开始录制”或者直接用快捷键。录制过程里做的所有编辑操作输入、删除、替换、运行某个菜单命令都会被记录下来。结束录制后“宏 - 停止录制”并保存起个容易记的名字。我把最常用的宏就固定为以下内容清理行尾空格打开替换对话框切换正则可选项设置查找\\s$替换为空全选执行。统一换行符CRLF执行“转为Windows格式”菜单操作。全角转半角数字和字母部分用正则把[---]替换为半角这一步需要写两三个替换规则。录制好后在“宏 - 运行宏”里可以反复执行也可以给它指定快捷键我建议给最常用的宏设置全局快捷键比如CtrlShiftC一键清理文章格式。5.2 用宏批量处理多文件排版如果你有一整个文件夹的txt文件需要做同类清洗纯手工打开每个文件再跑宏依然太慢。这时候用“宏 - 运行宏”配合多文件标签页先在Notepad中一次性打开所有待处理文件录制或执行一个宏时在替换对话框里勾选“所有打开文档”宏里的替换就会对所有文件批量生效。如果你设置了宏自动点击“全部替换”那运行一次宏就能把所有打开文档清洗完。更高阶的做法是使用Python Script插件直接对文件夹做循环遍历用Python的open和write读取文件内容做正则替换然后批量保存。这是另一种批量玩法适合非常规的复杂规则。5.3 录制宏的几个注意点宏录制时鼠标点击位置不会被记录只有键盘输入和菜单命令会被记录下来。所以如果宏里需要打开替换对话框请用快捷键CtrlH不要用鼠标点菜单否则不同屏幕分辨率下宏可能失效。另外宏录制过程中如果执行了“正则替换”但没勾好选项录制出来的宏会带着错误的选项设置反复出错。我的习惯是录制前先把替换对话框的选项全部设置好再开始录制录制时尽量只点“全部替换”和关闭窗口。6. 插件的正确打开方式Notepad之所以能成为排版利器很大程度靠插件。插件装对了很多原本要写脚本才能完成的任务直接对话框就解决了。6.1 插件管理器与离线安装新版Notepad自带“插件管理器”Plugin Admin可以直接搜插件安装。如果你用的是某些精简版或者公司内网无法直接访问外网也可以去官方插件仓库或者GitHub下对应插件版本解压到Notepad安装目录下的plugins文件夹注意要匹配32位或64位否则插件不会加载。6.2 我常用的插件清单TextFX Characters老牌文本工具尤其适合做大小写转换、ASCII排序、切分和合并行。虽然很久没更新了但在32位版上依然好用。64位版需要找兼容版本。Compare做两个版本的排版文本差异对比时开挂。把修改前后的文件各开一个标签页运行Compare所有差距行高亮显示对于检查伪替换有没有误伤内容非常实用。Python Script这是我重点推荐的插件。它允许你在Notepad内部跑Python脚本写一些灵活的逻辑处理文本。比如说批量生成资产编号、按固定宽度自动换行、批量处理文件夹内所有txt文件甚至可以实现调用外部程序做复杂管道处理。NppExec相当于文本编辑器内置命令终端可以执行系统命令比如调用图像文字识别工具、批量压缩文本等。排版场景里我主要用它跑命令行工具批量处理文件。JSON Viewer如果你的排版对象是JSON配置文件这个插件能一键格式化JSON还能树的折叠展开与排序。严格说这不算普通文本排版但日常写配置的时候非常好用。6.3 Python Script实战按固定列宽自动换行中文文本排版遇到的另一个问题是把一段长文本按固定的每行N个字符硬换行。正则写起来复杂而且标点符号容易断开得很难看。这时候直接用Python Script插件写一小段代码# 在选中的文本上执行每行最多20个字符强制换行 import re text editor.get_sel_text() if not text: text editor.get_text() lines text.splitlines() out_lines [] for line in lines: stripped line.strip() if not stripped: out_lines.append() continue while len(stripped) 20: out_lines.append(stripped[:20]) stripped stripped[20:] out_lines.append(stripped) editor.replace_sel(\\n.join(out_lines))注意这段逻辑简单粗暴地按字符截断没有考虑中英文标点的避头尾但对纯中文文本已经能达到效果。生产上想要更精细可以结合中英文标点规则做换行位置的调整但那样脚本会长很多。这里的重点是Python Script给了你“无限制扩展编辑器”的能力任何能想到的文本排版规则理论上都能在脚本里实现。7. 几个真实排版项目的完整拆解前面讲的是招式这里拆几个我最近实际处理的完整项目从需求挖掘到最终交付给大家看整套流程怎么串起来。7.1 人物与道具资产清单的排版实战有个做动画项目的朋友找我帮忙整理角色资产列表。原始表格是从Excel导出的格式乱成一团一行里同时包含了角色名、文件名、朝向、比例、备注等信息。他希望最终能生成一套结构清晰的纯文本清单方便直接放进项目文档。我拿到原始文件后先用Notepad打开发现每行大概有三种格式但字段间分隔符不统一有的是逗号、有的是空格、有的是Tab。第一步用正则把各种分隔符统一替换为Tab键[,\\t ]替换为\\t。第二步把重复表头行删掉——这些行有共同特征比如“角色名 文件名 朝向”用正则匹配删除。第三步把备注为空的行里多余Tab清理掉用\\t\\t替换为\\t。第四步按名称排序用TextFX的“Sort lines case insensitive”。最终导出的文本干净整洁再配合Excel导入时选择Tab分隔就直接变成一张规范表格了。这个案例里核心思维是排版不是要把文本变漂亮而是要让它符合某个稳定结构方便后续程序或人进一步处理。所以分隔符统一和数据清洗往往比视觉对齐更重要。7.2 为什么分镜脚本每个场景图通常有两种版本做分镜文本排版时我接触的项目里经常遇到“每个场景图都有两种版本”的需求。有人不理解以为PDF里同个位置放两张图是重复其实不是。分镜图中通常一张是“角色/场景资产示意图”用来标注人物位置、镜头调度和基础布局另一张是“效果参考图”或“道具/特效资产说明图”用来补充道具、灯光、特效参考两者配合才能让制作环节理解完整画面。作为文本排版人员我们的任务是在脚本中把这两类图的引用信息以清晰、统一结构呈现出来让导演、美术、模型、动画各环节都能快速定位。我用Notepad处理时会先定义一个分镜表头模板包含镜头号、场景号、景别、运镜、画面描述角色资产位置、道具资产、参考图文件、备注。然后用列编辑模式把所有行的表头统一列宽再用正则把分镜文本里的换行符统一最后用Python Script插件批量校验每行是否都包含资产引用字段无法匹配的自动标红方便后续回头修改。这样做下来分镜脚本的文本排版就达到“不仅好看而且机器可读”的状态了。后续用任何工具转成表格或做检索都顺滑。7.3 AI翻译保持原有排版的小技巧很多人问我“AI翻译输出后原本的排版全乱了怎么办”。其实这跟Notepad也有关系。AI翻译保持排版的原理是让翻译模型在翻译时保留原有标记和结构化信息但很多工具在处理时会先把文本里的标记剥离掉再翻译重组合时就丢失格式了。用Notepad可以自己做一个两段式方案先把原文里的格式占位符比如h1、\\n、{name}等临时替换成普通文本标记如【标题】【段落】【变量】再把处理后的文本交给AI翻译。AI只会翻译普通文字占位符保留原样最后在Notepad里把翻译文本中的占位符再替换回真实的标记就能做到翻译后格式不丢。这个原理清晰、操作不复杂我在处理本地化项目时屡试不爽。7.4 顺带聊聊打印排版与“AI人物资产”相关排版热搜里还有“ps2021 打印 自动排版”和“ai人物资产的排版”严格来说已经超出Notepad范围但可以补充一点思路如果你要把Notepad里的纯文本内容拿到PS里打印排版最简单的方式是在文本编辑阶段就把内容处理成结构化的、自带段落的文本再复制到PS的文本框里。PS的打印自动排版主要依赖字符样式和段落样式你在Notepad里做好的换行、缩进、空行分隔只要用段落面板设置合理的“段前距”“段后距”就能自动形成整齐的打印版式。至于AI人物资产这里是同一件事资产名、路径、标签、作者信息等先在一个干净的TXT里规范化再导入任何资产管理工具都比直接在工具里手敲快得多。排版的核心从来不是花哨而是整洁和一致。8. 常见问题与排查技巧实录排版过程中几乎每个人都会踩到几个经典坑我自己也栽过多次花了很长时间总结出排查清单。8.1 文件保存后编码变乱症状用Notepad打开正常保存后再用其他软件打开乱码。原因打开时识别成ANSI但编辑后保存成了UTF-8而其他软件按ANSI读取或者反向操作。处理办法在保存前先在“编码”菜单里查看当前文件编码用“转为UTF-8编码”显式转换后保存。同时关闭“编码 - 自动检测UTF-8编码”防止某些文件被错误识别。8.2 正则替换只替换了一部分症状替换结果明显漏掉了很多匹配行。排查点确认是否开启了“匹配整个词”选项如果勾选会在单词边界处判断中文连续文本下容易漏确认是否勾选了“匹配大小写”如果文本里英文大小写混杂而你的正则写死了小写可能只命中一部分确认是否在“选区中”替换如果有选区未选中的部分不会受影响。8.3 宏录完运行结果不对原因通常是录制时鼠标操作了菜单而宏只记录键盘命令。解决方法是重新录制全程只用键盘快捷键和输入如果宏里需要替换对话框请一遍遍检查替换设置宏里如果有“打开文件”操作最好先固定操作文档或者放弃录制宏改走Python Script插件。8.4 插件加载后运行报错先看Notepad是32位还是64位插件必须匹配位数否则不能加载。另外插件版本冲突也很常见旧版本插件和新版Notepad之间API不兼容会直接导致启动崩溃这时要更新插件版本。如果是Python Script插件出错先检查版本号新版2.x系列和旧版脚本有时存在兼容性问题。8.5 一键清理后误删了正文误删是排版时最痛的事件。我的习惯是大改动前先用“文件 - 另存为”备份一个原始副本并且把存在风险的替换分成两步先替换为临时标记比如__DELETE__再全文搜索确认没有命中非目标内容最后才替换为空字符串。用Compare插件对比备份和清理后的结果也是防止误删的有效手段。9. 一些心得和私藏技巧排版这种活儿干久了最大的感触是工具只是门槛思路才是分水岭。同样的文本有人花一天手工整理有人花十分钟写好正则和宏产生的质量还可能不一样。我一直觉得Notepad是一座被低估的金矿它不漂亮、不智能但胜在开放和确定你能完全掌控它执行什么、不执行什么每一次排版动作都可复现、可记录、可批量。只要学会了编码、正则、列编辑、宏和脚本这五个能力基本任何纯文本排版场景都难不倒你。最后分享一个我私藏了很久的小技巧在Notepad里同时打开多个文件做排版时别用“全部替换”直接全换先用“替换”单次执行留意光标跳转位置和状态栏下方的替换计数如果第一次替换就跳到了预料之外的位置说明正则没匹配到你想要的内容赶紧CtrlZ回退别让它一路替换下去。这个习惯帮我挡掉了至少十次灾难性误改。排版本身不算显眼的技术但做得好它能让后续的流程无比省心。希望这篇攻略能让你再也不用把时间浪费在无意义的复制粘贴上。
