
1. 为什么选了Notepad做排版而不是Word或VS Code先说点实际的。排版这个需求看着不复杂但做起来特别容易被工具拖后腿。之前我试过用Word整理日志片段、用VS Code处理CSV甚至用Sublime写临时脚本结果都差口气。Word太重打开大文件能卡到怀疑人生VS Code功能虽强但启动速度、内存占用、插件管理对一个只想“快速把文本弄整齐”的场景来说完全是杀鸡用牛刀。直到把Notepad当作日常主力文本工具我才觉得排版这件事终于有了顺手的感觉。Notepad最大的特点就一个字轻。它启动快、占用低、打开几十MB的日志文件也不怎么卡而且内置的功能几乎都是为“纯文本操作”设计的。这意味着你不需要在排版之前先跟编辑器里的各种概念做斗争打开就能干活。但从另一个角度看它又不像看起来那么“简单”。很多人把它当成高级记事本只是偶尔打开替换几个字、改个编码完全没意识到自己手里其实握着一套非常完整的文本处理工具链。尤其是它的宏录制、正则表达式、列编辑模式这些功能只要用熟了效率翻倍不是夸张的说法。这篇文章专门聊排版。不是那种“字体调大、居中加粗”的排版而是面向日志处理、代码格式化、表格数据对齐、批量文本清理这一类实际场景的排版技巧。主要适合以下几类人经常处理日志文件、数据导出文本、CSV表格的运营和测试人员日常要写脚本、改配置、整理文档结构的开发者以及所有想把手动重复操作变成“一键完成”的效率控下面所有的技巧我都是按“可以立刻上手”的标准来写的。每个功能都会解释在哪里点击、为什么这么做、实操中会踩什么坑尽量让你看完就能直接用起来。2. 视图模式让长文本不再像迷宫排版的第一步不是动手改内容而是先把“看清楚”这一关过了。Notepad的视图模式功能很多人不知道或者知道了也从来没用过。其实它对你的排版体验影响非常大尤其是面对长日志、多文件对比、嵌套结构文本的时候。2.1 双视图同步滚动一个文件当两个看场景很常见一个日志文件几百行前面是配置信息后面是报错堆栈你想对照着看但又不想反复上下滚动。这时候就轮到双视图出场了。操作路径很简单菜单栏找到“视图”然后选择“移动/复制当前文件”里面有两个选项——“移动到其他视图”和“复制到其他视图”。如果你选择了“复制”同一个文件会在两个窗格里各显示一份你可以把两个窗格分别滚动到不同位置互不干扰。再加上“视图”菜单底部的“同步垂直滚动”和“同步水平滚动”两个窗格就能同步运动。这个功能对排版的意义在于你可以左边看原始文本右边看格式化后的效果或者左边看A段落右边同时改B段落。尤其是批量替换前我都会用双视图先对比一遍替换前后的差异避免改完之后发现不符合预期。我在处理上千行的配置文件时最常用这个模式。左边放原始配置右边放修改后的版本同步滚动一遍就能肉眼检查所有改动点比来回切换标签页高效太多了。2.2 折叠与缩进结构化文本一眼扫完Notepad天然支持代码折叠它会对带有缩进结构的文本自动识别层级。只要文本本身用空格或Tab做了缩进Notepad就能在行号左侧显示加号/减号点击就能展开或折叠整个层级。这对排版有什么帮助非常直接。当你在整理一份缩进结构的清单、JSON片段、Markdown大纲时只需要把所有二级、三级子项折叠起来就能一眼看出整体结构有没有问题比如某个子项是不是多缩进了一层、某个同级条目是不是在里面混了一个别的层级。你不需要读内容光看折叠状态就能发现结构漂移。快捷键也分享一下Alt数字键可以直接折叠/展开到对应层级比如按Alt1显示一级标题按Alt2显示到二级。这个在梳理文章大纲的时候特别好用我整理长文结构基本全靠它。2.3 文档地图再长的文件也有方向感Notepad从较新的版本开始在视图菜单里提供了一个叫“文档地图”的功能开启后右侧会多出一个缩略图区域显示整个文档的轮廓。跟Sublime Text的minimap类似你可以通过拖动地图里的高亮块快速跳转位置。这个功能处理超大文本时特别有用。比如几万行的日志你想找某个时间段附近的报错在地图上看哪里有高密度内容哪里有大片空白心里就会有个大致的方向感比一页一页翻效率高不少。另外如果你经常需要处理右对齐、对齐等宽之类的排版需求文档地图配合等宽字体比如Consolas、Courier New能帮你快速看出文本里有没有因为全角字符、Tab混用导致的错位区域。我自己的习惯是排版前先开文档地图扫一遍大致摸清文本的“形状”再决定从哪里入手。3. 编码与换行符排版中的隐形杀手排版除了“看起来整齐”还有一个特别容易忽略的维度——文本的底层格式。你可能遇到过这种情况拿到的文本文件打开后全是乱码、或者一个好好的脚本在别的工具里全挤成一行、或者文件里明明没内容却提示格式不对。这些问题其实都不是内容问题而是编码和换行符在捣鬼。3.1 UTF-8 BOM与无BOM区别在看不见的地方Notepad右下角的状态栏会显示当前文件的编码比如“UTF-8-BOM”“UTF-8”“ANSI”等。很多人在保存文件时完全不看这里一旦文件被其他程序读取就会出现莫名其妙的问题。BOM全称是字节顺序标记在UTF-8文件里表现为文件最开头的一串隐藏字节。它的作用是帮助程序识别这个文件是UTF-8编码但对某些解析器来说反而会带来麻烦比如Linux下的脚本在首行出现了BOM字符shell解释器就会直接报错因为第一行不再是#!/bin/bash而是\ufeff#!/bin/bash。排版层面也一样。我用Notepad整理了一份对齐良好的文本结果导入到某个网页表单或者数据库工具后第一行内容前面总是多出一个看不见的空白字符排查了很长时间才怀疑到BOM上。解决办法很简单在“编码”菜单里选择“转为UTF-8”还是“转为UTF-8-BOM”看需求来定。我的建议是如果你不确定接收方是什么程序优先用无BOM的UTF-8。如果是Windows下的老旧软件可能需要保留BOM。理解了区别之后你就会明白BOM不是“高级设置”而是排版流程里必须关注的细节。3.2 CRLF和LF换行符不对全盘皆乱Windows系统里换行默认是回车加换行两个字符即CRLF\r\nLinux和macOS系统里通常只有一个换行符LF\n。Notepad称为Windows和Unix两种格式。如果你把一个Windows格式的脚本文件传到Linux服务器上执行很容易出现“/bin/bash^M”之类的错误就是因为回车符混进了命令。在排版场景中CRLF和LF混用会让文本在部分编辑器里看起来有额外的空行或者行尾有奇怪的符号。查看和转换换行符在Notepad里也很方便。菜单栏“编辑” - “行尾转换”可以选择转换到Windows格式、Unix格式、Mac格式。另外通过“视图” - “显示符号” - “显示行尾符”可以看到每一行结尾到底用的是CRLF还是LF这个小功能关键时刻特别有用。我拿到混合换行符的文件习惯先全选复制到新的Notepad标签页里再统一转换一遍目标格式等于做了一次“清洗”。之后再排版、替换、保存就不会有乱七八糟的历史包袱了。提示查看“显示所有字符”也能帮你发现空格和Tab混用的问题。混合缩进的代码在排版时最容易出乱子一旦发现优先统一。4. 正则查找替换排版的终极武器如果只能从这篇文章里带走一样东西我强烈建议带走这个正则表达式。Notepad的查找替换功能如果普通人用是“找字换字”那配合正则就是“批量重构文本”。这对排版的意义非常重大因为很多排版工作本质上是结构化转换正则就是转换的桥梁。4.1 匹配原理一次讲清楚正则表达式简单理解就是用一套符号规则描述你想匹配的文本模式。它不会逐字比对你的文本内容而是按你定义的“规律”去扫描全文命中所有符合规则的片段。初学者最容易犯的错是把正则当普通文本搜索来用觉得“我写什么就应该找到什么”。实际上正则里有很多特殊字符比如.、*、、[、(等等都有特殊意义。比如.代表任意一个字符*代表前面的字符出现零次或多次^代表行首$代表行尾\d代表数字\s代表空白字符\n代表换行。掌握这些基础元字符之后你就有了“能用规则说话”的能力。比如想查找所有以数字开头的行正则就是^\d想找所有空行就是^\s*$想找连续三个或以上的空格就是{3,}。麻烦的是正则写法很多不同的编辑器支持的语法细节可能略有差异。Notepad使用的是PCREPerl兼容正则表达式风格大多数常见用法跟其他主流工具是一致的所以你在这里学会的规则拿到别的地方大概率也能用。4.2 四个最常用的排版场景讲太多理论容易劝退下面我直接列出几个我最常在实际排版中用到的正则替换场景每条都附上具体规则。场景一把连续多个空行压缩为一行日志文件经常出现大段大段的空行看着不整齐到处是洞。在替换框里查找目标写\r?\n\s*\r?\n替换为\n。意思是匹配“一个换行、若干个空白、再一个换行”的组合替换成单个换行这样多个空行就会变成一行。要注意替换时“查找模式”必须选“正则表达式”否则这些符号就是字面文本。场景二给每一行加上序号这个算是整理清单和配置文件的经典需求了。假设你想让每一行前面都加上一个序号可以用正则先给每行注入一个占位符但更优雅的做法是直接用Notepad的列编辑功能详见下一节。如果要配合正则处理也可以用查找目标^替换为[待编号]先给每行开头加上统一标记再做批量处理。实际工作中我更推荐先列编辑再配合宏效率更高。场景三清理行尾多余空格这是我从其他人那里学到的用过一次就再也回不去了。很多日志和导出的文本行尾都带着空格这些空格隐藏起来看不见却会影响对齐和后续处理。查找目标写[ \t]$替换为空就能一次性清掉所有行尾空格。[ \t]表示空格或Tab表示至少一个$表示行尾。这个规则极其常用。场景四从混乱文本中提取特定字段比如一坨HTML或者日志里想提取所有href...后面的链接。查找目标可以写href([^]*)替换为$1就能把所有链接内容提取出来。这里的()用来捕获内容$1代表第一个捕获组这是正则反向引用的基础用法熟练之后你一定会爱上它。4.3 替换时的“计数”和“范围”别忽视Notepad的替换对话框里左下角可以设置搜索范围可以选“所有打开文档”还是“当前文件”。有时候你想把批量替换应用到整个项目里也可以用“在文件中查找”功能直接跨文件搜索替换。这在我们处理批量文本整理时特别有用省去了一个个打开文件的繁琐操作。另外替换时一定要留意替换结果里的“计数”提示。Notepad会告诉你替换了多少处这个数字本身就是一种校验。如果你预计替换10处结果实际替换了1000处那大概率是正则写得太宽了需要立刻撤销检查规则。注意正则有个特点——“要么匹配不到要么匹配超预期”。写正则之前先想清楚它可能命中的“最小范围”和“最大范围”最好先在少量文本上测试确认无误再全局替换。5. 列编辑模式表格对齐的隐藏神器正则处理的是“按行/按内容”的批量操作那“按列/按位置”的操作呢这就轮到列编辑模式出场了。说实话我在知道这个功能之前整理表格对齐全靠手动敲空格后来发现Notepad可以像操作表格一样直接编辑多列效率提升是几何级的。5.1 什么是列选择以及怎么操作普通文本选择是横向拖选从行首拖到行尾列编辑不一样你是纵向地从一个位置拖到另一个位置选中的是一块矩形区域。比如你有5行文本每行长度不一样但你只想选中每行第10到第15个字符的位置普通选择做不到列编辑可以。操作方式有两种按住Alt键然后用鼠标拖选就能进入列选择模式按住AltShift再用方向键移动光标也可以扩展列选区选好一个列区域后你可以直接输入文字、删除内容、粘贴内容所有操作会同时作用于选中区域里的每一行。比如你选中了一个宽度为6的矩形区域直接输入“hello”所有选中的行都会在同一位置插入这个字符串。5.2 批量插入前缀、后缀一秒完成这是列编辑最炸裂的场景之一。比如你有100行URL想给每一行开头加上https://以前怎么办挨个复制粘贴现在只需要光标放到第一行开头按住AltShift光标往下移动到最后一行的开头直接输入https://瞬间就完成了100行的前缀添加。同理想加后缀就是在行尾位置选一个列选区然后输入内容。这个技巧在整理代码、生成批量测试数据、给配置文件加注释时都特别好用。我自己最常用的是给一组KVKey-Value配置统一加上对齐用的空格或者批量把一组文本用引号包起来。这些都是纯粹的机械操作靠手动做又慢又容易漏列编辑化解得干干净净。5.3 配合宏列操作也能自动化列编辑偶尔会有限制比如你的列是在不同位置、不同长度就很难用纯列选择一次性搞定。这时候可以先用列编辑把局部修好然后录制一个宏在“宏”菜单里选择“开始录制”执行一遍操作停止录制再通过“运行宏多次”把同一套操作应用到所有需要的地方。宏的本质是把你的操作步骤“录像”下来然后批量重放。它对重复性排版的意义非常大尤其是隔几行就要执行同样的格式化操作时手动重复100次和录一次宏跑100次完全不同的工作体验。关于宏的进阶用法后面专门有一节展开。6. 宏录制与批量执行告别重复劳动除了正则和列编辑宏是排版效率的另一根支柱。Notepad的宏功能藏得不算深但真正用起来的人不多。原因可能是它的“录制”模式有点过于朴素录完容易记不住自己干了什么。但只要你克服了这一点它强大的批量处理能力绝对值得花时间掌握。6.1 录制宏的完整过程在Notepad菜单栏找到“宏”选择“开始录制”。此时你所有的键盘输入、鼠标点击部分操作都会被记录下来。操作完成后选择“停止录制”然后保存这个宏。之后你就可以在“运行宏”里找到它或者给它绑定一个快捷键。这里有一个关键细节宏记录的是“操作”而不是“语义”。比如你录制的是一次“查找替换”那重放时它就继续执行同样的查找替换不管当前打开的是什么文件。这就意味着你可以把一次完整的排版流程录成宏然后直接套用到其他文件上。我举个具体的例子。当时我整理了一批导出的Markdown表格表格之间的单元格间距乱得一塌糊涂还夹杂着多余的空行。我录制了一个宏步骤是全选CtrlA将所有连续空行压缩为单个空行将行尾空格全部去掉在每个表格分隔行后插入一个空行录完保存之后我打开一个新文件直接运行一次这个宏整个文件就自动排版完毕。原来手动做要十分钟现在十秒钟都不到。6.2 运行宏的三种方式按场景选择宏保存后有几种运行方式单次运行、多次运行、绑定快捷键。单次运行在“宏”菜单里直接选择适合临时处理一个文件多次运行在“宏” - “运行宏多次”里设置重复次数适合一个文件里有很多相同段落要处理绑定快捷键给宏指定快捷键比如CtrlShiftF适合高频使用的宏跨文件批量处理时可以先把需要处理的文件全部打开然后用“运行宏多次”配合“所有打开文档”的范围设置一次跑完整个批次。不过要注意宏在多个文件间运行的时候它会不会自动切文件取决于你录制的时候是否录了切换标签页的操作这一点需要提前规划。6.3 宏录制的注意事项宏虽好但也有局限性基于我的实际使用经验给你几个避坑建议录制前先把光标位置固定好。宏回放时是完全按照录制时的光标路径来执行操作的如果你录制时从第1行开始那重放时也是从第1行开始不会自动适应文件变化。所以录制之前要确保“从什么位置开始”是可预测的。尽量不要录制鼠标滚动。宏记录鼠标滚动经常出现误差尤其是长文档录出来重放容易“滚过头”。当然执行搜索替换时鼠标在哪其实无所谓因为它会全文搜索。录制之前先演练一遍要操作的步骤确认无误后再正式录制。我吃过几次亏录到一半发现某个步骤是错的只能全部重来反而比手动做还慢。给宏起一个自己能看懂的名字。默认的宏名都是一堆编号时间一长根本分不清是干什么的。我习惯用“清理行尾空格_压缩空行”这种描述性命名。7. 常用插件组合把Notepad升级成排版工作站微内核、强扩展这是Notepad的另一个重要设计思路。插件系统让这个轻量编辑器可以随时长出你需要的能力。布局排版这个领域有几个插件是实打实的效率加速器。7.1 Compare两文件对比排版差异很多时候排版工作和“找不同”是分不开的。你改了一个配置文件需要确认改动点或者你从两个来源拿到同一份数据需要检查它们的差异。Notepad自带的文本对比能力几乎等于零但装上Compare插件之后一切就变得清晰了。安装方式菜单栏“插件” - “插件管理” - 可用列表里搜Compare安装重启即可。启用后打开两个文件点击Compare按钮会以颜色高亮显示两边的差异行非常直观。你还可以在对比结果里直接编辑实时看到左侧和右侧的差异变化。对我来说Compare解释了一个关键问题排版到底改了什么有时候全局替换做了几次我自己都不记得改过哪些内容用Compare跟原始文件一对比所有差异一目了然。还有一个使用技巧——对比前先统一换行符。如果两个文件一个LF一个CRLFCompare会满屏标红你根本看不出真正的内容差异而且你会觉得插件坏了。7.2 Markdown Preview排版结果实时预览如果你经常用Markdown写文档排版效果好不好光看源码总是不够直观。Notepad本身不提供预览预览功能但“Markdown Preview”插件可以解决。它对标题、列表、代码块、表格的渲染效果比较准确写文档的时候右侧预览、左侧编辑体验并不比专门的Markdown编辑器差。我自己的使用习惯是排版完文本后先看一眼预览效果再决定要不要调整层级缩进和空行策略。如果标题层级乱了、代码块没闭合预览里一眼就能看出来这比逐行检查源码快得多。7.3 TextFX与文档格式化工具TextFX这个插件比较老了但它在某些场景下依然挺好用的比如给文本加行号、排序、把Tab转为空格等等。如果新版Notepad不再内置TextFX你也可以在插件管理里搜出来安装。另外如果你的主要排版对象是CSS、JSON、XML推荐安装JSFormat或XML Tools。这些工具提供格式化快捷键一键缩进对齐尽管它们更加程序员友好但在办公场景里处理配置文件也一样好用。一张表总结我觉得值得装的插件方便你挑选插件名主要用途适合人群Compare文件差异对比配置管理、代码审查Markdown PreviewMarkdown实时渲染文档写作者TextFX文本工具集排序、加行号排版新手MIME Tools处理Base64等编码开发调试场景XML ToolsXML格式化校验网页开发、配置处理关于插件的选择我的建议是“少而精”。装太多插件不仅拖慢启动速度还会让菜单变得臃肿。真正高频率使用的插件有两三个就已经非常够用了。8. FAQ高频踩坑与解决方案最后一个部分把我在排版实操中遇到的典型问题整理成一个速查表。这些问题我在不同阶段都踩过坑有些甚至困扰了我相当长的时间写出来帮你避雷。8.1 为什么我的替换操作一点反应都没有最常见的原因是查找模式选错了。在替换对话框左下角有“查找模式”选项默认可能是“普通”但你写的是正则表达式这时系统会把你的正则当普通文本去找找不到自然没反应。解决办法就是切换到“正则表达式”。另外要检查一下是否勾选了“匹配整个单词”或“区分大小写”之类的选项这些限定条件也可能是你没找到目标的原因。我习惯写正则时先点一下“查找下一个”确认能命中再执行“全部替换”不然很可能替换了一个寂寞。8.2 文件打开是乱码如何恢复首先要判断是编码识别错误还是文件真坏了。Notepad右下角会显示当前编码如果你用的是UTF-8打开一个GBK编码的文件大概率会乱码。解决办法是菜单栏“编码” - “使用编码打开”手动选择文件原来的编码重新加载。常见的中文编码是GB2312、GBK还有一些是繁体环境下的Big5。多试几次基本能找到正确编码。找到正确编码后如果需要长期使用建议转为UTF-8保存减少后续兼容性问题。8.3 正则一直提示“表达式无效”怎么回事大概率是括号或转义字符写错了。正则里的(、)、[、]、{、}都是特殊字符如果你要匹配字面上的括号需要写成\(、\)。在Notepad里(有时候需要转义有时候不需要取决于上下文这确实容易让人犯迷糊。解决思路是把正则拆成最小单元一个一个测试。比如先把href([^]*)拆成href测试能匹配再逐步加上([^]*)部分。这样定位问题很快。正则的调试是需要耐心的但熟练之后你会觉得它比可视化工具更可靠。8.4 批量处理文件时宏经常错过第一个文件这个问题比较典型。宏录制时包含了“打开文件”操作那运行宏之后它会总是尝试打开同一个文件而不是处理当前光标所在文件。解决办法是在录制宏的时候不要录制打开/切换文件的操作只录制排版步骤。然后通过“打开多个文件 - 对每个文件运行宏”的方式来批量处理。8.5 Tab和空格混排怎么看清楚强烈建议开启“视图” - “显示符号” - “显示空格和Tab”这里会把空格显示为点把Tab显示为箭头。这样混排问题一目了然。需要统一时可以用正则“查找空格”或“查找Tab”进行批量替换也可以使用TextFX插件里的转换功能。9. 快捷键整理这里分享一份Notepad排版快捷键速查表都是我自己日常使用频率最高的。功能快捷键打开文件CtrlO保存CtrlS查找CtrlF替换CtrlH全选CtrlA复制当前行CtrlD删除当前行CtrlL列选择鼠标模式Alt拖拽列选择键盘模式AltShift方向键折叠到第1层Alt1折叠到第2层Alt2显示所有字符CtrlShift0跳到指定行CtrlG打开宏录制菜单菜单栏“宏”快捷键最终的价值在于形成肌肉记忆。看一遍记住很难天天用几天就离不开了。建议你先挑两三个高频操作绑定到习惯的位置其他的慢慢积累。用Notepad做排版这件事我的切身体会是它的上限比你想象的高。很多人守着“高级记事本”的标签可惜了这些能救命的功能。从视图模式到列编辑从正则到宏本质上都是在帮你减少“人肉机械劳动”让你把精力留给更需要判断力的部分。尝试从一个小功能开始比如先学会清掉行尾空格或者用一次宏跑完整个文件夹的整理你就会发现原来排版真的可以不痛苦。