十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Notepad++排版实战:从正则替换到列编辑与宏录制的文本整理指南

Notepad++排版实战:从正则替换到列编辑与宏录制的文本整理指南 1. 先说清楚Notepad在排版这件事上到底强在哪昨天帮同事处理一份三百多行的日志文件里面混着全角空格、行尾多余空格、夹杂在数据里的制表符还有一堆不知道是 LF 还是 CRLF 的换行。他原本打算复制到 Word 里一个个手工清理我说你等等打开 Notepad 三分钟就搞定了。结果确实如此正则替换加列编辑两三个动作下来整份日志从“看着头疼”变成了可以直接导入 Excel 的干净数据。很多人对 Notepad 的印象还停留在“就一个比记事本好用点的编辑器”其实它真正厉害的地方在于把那些在 Word、Excel 里要折腾半天的排版工作用极轻量的方式高效完成。无论你是写代码的、做运维的、搞数据分析的还是经常处理文本资料的产品、运营、编辑只要你日常工作里离不开“整理文本”这件事Notepad 的排版能力就值得你花半小时系统掌握。这篇文章我不打算念说明书而是按我自己多年使用下来的路径来拆从最基础的设置到正则批量处理再到列编辑、宏录制、插件扩展最后聊聊那些容易踩的坑。全程以“排版”为核心场景每个技巧都会说清楚在什么情况下用、怎么操作、为什么这样最省事。2. 排版前必须确认的三项基础配置正式开始排各式文本之前有几步基础配置建议你先确认好。这几步不花什么时间但直接影响后续操作的效率和准确性。2.1 自动换行要不要让它“自动拐弯”自动换行这个开关菜单在“视图 - 自动换行”。新手容易不分场合地开着老手则会有意识地切换。比如你在处理一篇连续的正文文档每行并没有刻意换行希望它在屏幕上自动折行显示那就开着自动换行阅读舒服。但如果你要处理的是一份每行一条记录的清单或者一行一行的代码那一定得关掉自动换行否则行号、缩进、文本边界会混作一团正则匹配时也容易看岔。我的习惯是处理数据类文本时关闭自动换行靠横向滚动条控制视野写作和阅读类任务时临时打开。这个开关没有对错关键是意识到它对你判断“行”的影响——因为 Notepad 里的很多操作比如排序、去重、正则的单行匹配都是基于物理行来处理的。你屏幕上看到的“视觉折行”和真实“物理行”不一致时排版判断就会出错。2.2 打开“显示所有字符”让隐藏问题现形这是排版中最容易忽视、但最该养成的习惯。在“视图 - 显示符号”下拉菜单里把“显示空格与制表符”“显示行尾符”“显示所有字符”都打开。打开之后一行文本里的空格会显示为小点制表符显示为箭头行尾会显示 LF 或 CRLF 的符号全角空格也可能以特殊形式暴露出来。排版的本质是什么就是让文本中的这些“不可见字符”也符合规范。很多时候你觉得文本对齐了其实是视觉上碰巧整齐但字符层面可能混着半角全角、Tab 和空格混用一旦换到别的软件里就原形毕露。先打开显示符号再动手处理你才是在“看得见”的前提下工作而不是瞎子摸象。2.3 默认语言与缩进宽度如果你经常用 Notepad 排版代码或配置文件建议把默认语言设置好菜单“设置 - 首选项 - 新建文档”把默认语言从“正常文本”改成你常用的语言比如 C、Python、JSON 等。这样打开一个无扩展名文件时语法高亮和部分排版辅助会自动生效。缩进方面在“设置 - 首选项 - 语言”里可以调整制表符宽度。我通常把 Tab 设为 4 个空格宽度。这里有个关键点到底是“插入空格”还是“插入制表符”。如果你希望文件在不同编辑器里显示一致选“插入空格”因为空格在任何环境下宽度都稳定如果你处理的是 Makefile 之类对 Tab 有硬性要求的文件那就必须保留真实 Tab。通常我处理给别人用的文档时会先用“编辑 - 空白操作 - 将 Tab 转换为空格”把 Tab 全部转成空格避免对方打开时缩进错乱。3. 正则替换排版流程里的“核武器”如果说 Notepad 的排版能力十分正则替换至少占七分。这不是夸大其词而是因为几乎所有重复性的文本清洗、排版统一问题归根到底都是字符串模式匹配的问题而正则就是解决这类问题的最优解。3.1 用正则批量清理空行、行尾空格和重复标点举个最常见的例子从网页或 PDF 里复制出来的文本经常带大量空白行和行尾空格。手工删几百行内容删到怀疑人生。正确做法是Ctrl H 打开替换对话框勾选右下角的“正则表达式”模式然后把查找目标设为[ \t]$替换为留空。这个表达式的意思是“匹配行尾的一个或多个空格或制表符”。接着处理空行查找目标设为^\s$替换为空这可以删掉所有“看起来是空的”行。注意^\s$比^$更实用因为很多时候那些“空行”里其实藏着空格或 Tab肉眼看不见^$处理不掉^\s$一次清干净。再比如从某些软件导出的文本里中文引号变成了“”或混用想统一成直角引号或者中文引号也可以用正则批量替换。查找([^]*)替换为“$1”就能把英文双引号包裹的内容变成中文双引号。注意这里$1表示第一个括号里匹配到的内容也就是引号之间的所有字符。正则的表达能力确实非常强。3.2 一键把杂乱的段落重排成固定宽度还有一类需求你拿到一篇从 PDF 复制的文章每行长短不一断行混乱想重新排成每行固定字数的形式。Notepad 没有 Word 那种“两端对齐”的概念但我们可以用正则加文本处理的方式间接实现。首先把所有换行符替换成空格把段落合并成连续的长文本。具体操作在替换对话框里查找目标填\r\n替换为空格或者如果你想把所有段落连成一整段这里就替换为空。接下来如果你希望每 N 个字符换行就需要借助脚本或插件了。纯手工做法是用“宏”录一遍“在第 N 列插入换行”并在“编辑 - 列编辑”里完成批量操作之后再配合行首空格、行尾清理等正则得到一份相对规整的文本。当然我说实话这种“把文本重排成固定宽度”的场景在现代编辑工作中已经越来越少更多是直接交给 Markdown 排版或在线工具处理。但如果你恰好要处理旧式纯文本格式知道这套组合拳还是很有价值的。3.3 从混乱日志中提取结构化内容日志清洗是 Notepad 排版的高频场景。假设你有这样一行日志2025-01-12 10:23:45 ERROR [main] Failed to connect to db, retry2, host127.0.0.1, port3306你想把时间、等级、线程、消息、参数分别提取出来整理成表格可导入的格式。这时用正则捕获组最顺手。查找目标可以写成^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\s(\w)\s\[(\w)\]\s(.*?)(?:,\s*retry(\d))?(?:,\s*host([\d.]))?(?:,\s*port(\d))?替换为时间: $1\t级别: $2\t线程: $3\t消息: $4\t重试: $5\t主机: $6\t端口: $7注意这里每组括号就是一个捕获组替换文本里的$1、$2依次对应这些组。执行替换后一行日志就变成了一行带 Tab 分隔的字段导入 Excel 时直接按 Tab 分列就完成结构化。每次看到这种效果我都会觉得会正则的人和不回正则的人工作效率差距真不是一点半点。提示正则测试不熟时可以先拿一小段文本复制到新文件里做试验替换对话框里的“全部替换”要慎重建议先“替换”单次看效果确认无误再“全部替换”。4. 列编辑模式让表格化排版成为肌肉记忆如果说正则是信息提取的利器那列编辑就是“批量修改一列”的利器。Notepad 的列编辑功能被很多老手称为“被低估的功能”因为它能完成许多看似不可能快速完成的排版动作。4.1 矩形选区多行同步修改按住键盘上的 Alt 键然后用鼠标拖动你会发现选区变成了一个矩形而不是普通的行连续选区。这就是列模式——矩形选择。这项功能在处理“第 2 列”这种需求时是无可替代的。举个例子你有一份用空格或 Tab 分隔的名单每行内容格式如下张三 北京 100101 李四 上海 200010 王五 广州 510000现在想把中间的城市列全部加粗Notepad 不是 Word不能加粗纯文本里的某部分但你可以用矩形选择把中间列精准选中然后统一修改、统一删除、统一插入内容。比如按住 Alt 从第二行“北京”左侧拖到“广州”右侧选中整列城市然后直接输入新文字三行会同时被替换成你输入的内容。这种“多行同时输入”的体验用一次就回不去了。类似地如果某列的宽度不齐要用空格补位做成对齐排列也可以用矩形选择在每行同一列位置插入固定数量的空格实现视觉上的表格对齐。4.2 列编辑对话框批量插入编号和时间戳除了手动 Alt 拖选Notepad 的“编辑 - 列编辑”对话框也是排版神器。它有两种主要模式插入数字和插入文本。插入数字时你可以设定初始值、增量、位数补零。比如要生成 001 到 100 的编号只需先把光标放在每行行首调出列编辑对话框选择“数字”初始值填 1增量填 1位数填 3然后确认。100 行序列号瞬间生成而且每行都整齐地以三位数显示。这在做文件清单、批量条目和测试数据时非常实用。插入文本模式则可以把当前日期、时间固定格式批量插入到每行的指定列位置。比如你给一批文本逐行打上时间戳就能用这个方法。结合正则和列编辑很多手工排版工作基本都能自动化掉。提示列编辑依赖“光标所在位置”和“选区的形状”。焦点在行首、行尾还是中间结果差别很大。操作前先想想你要在哪个位置插入再把光标或选区放准。5. 宏录制把“手工排版”变成“一键完成”如果说正则是批量处理的“函数”那宏就是批量处理的“脚本”。宏录制在 Notepad 里隐藏得有点深但一旦会用效率翻倍。5.1 录制一个“日志清洗”宏我个人的常用场景是清洗一组格式混乱的导出日志。简单流程如下第一步新开一个文件粘贴一小段真实数据。打开“宏 - 开始录制”这时候你的所有操作都会被记录下来。第二步依次执行我需要的操作Ctrl H设置查找目标[ \t]$替换为空点“全部替换”关闭替换框再次 Ctrl H设置查找目标^\s$替换为空点“全部替换”再执行一次编码转换比如从 ANSI 转为 UTF-8最后在行首插入[清洗]前缀以便后续区分处理过的行。第三步“宏 - 停止录制”然后在“宏 - 保存当前录制的宏”里给它起个名字比如“LogCleaner”。之后你再打开任意一个日志文件只需要“宏 - 运行 LogCleaner”整个清洗流程自动完成。需要注意宏录制的是操作序列而非逻辑条件。如果你某一步点错了、选错了对话框选项录下来也会原样复现。所以我的习惯是录制前先在心里把流程过一遍甚至先在临时文件里手工试一遍确保步骤无误后才正式录制。这样保存的宏才算靠谱。6. 插件生态排版效率的放大器Notepad 自带功能已经很强但插件才是它真正与其他简易编辑器拉开差距的地方。插件管理器在“插件 - 插件管理”里搜索并安装即可。下面几个与排版相关的插件建议每个文本处理爱好者都装上。6.1 TextFX字符转换和文本整理的老牌利器TextFX 是历史悠久的经典插件之一。虽然理念偏老但几个功能至今不过时。比如它可以把选中文本快速转换为大写、小写或者把每行用指定字符串包裹起来它还提供排序功能可以对选中行做升序、降序排序这在整理清单、去重流程里非常方便。整理名单时我常用 TextFX 的“Sort lines case insensitive”来对列表排序再用“Edit - 行操作 - 移除空行”来清理。如果你处理的是中英混排的内容TextFX 的字符整理功能也能帮不少忙。6.2 用 NppExport 导出带格式的代码块NppExport 插件解决了“代码排版后如何分享”的问题。它可以把当前文档的带语法高亮内容导出为 RTF 或 HTML。这在撰写技术文档、把代码复制到 Word 或幻灯片里时非常好用。具体操作选中代码后“插件 - NppExport - Copy RTF to clipboard”然后到 Word 里粘贴代码的配色、缩进都被保留下来。这个功能对于做技术分享的人来说省去了很多在 Word 里手动调整代码格式的功夫。6.3 其他值得一试的排版相关插件Compare高亮对比两个文件的差异在排版改版后做内容核对时非常有用。MIME Tools处理邮件编码相关的文本时方便。JSON Viewer格式化 JSON让一段挤压成一行经 JSON 格式的文本瞬间变成树形结构这对 API 返回内容的排版是“刚需级”功能。提示插件不是越多越好。每装一个插件都会略微拖慢启动速度我自己的准则是一台机器上只保留 58 个高频插件其余随用随装。7. 编码与换行符排版的地基排版排版排的是“字符”而字符的底层是编码。很多人排版排了半天一保存打开乱码原因就是编码没统一。7.1 编码识别与转换的正确姿势Notepad 右下角状态栏会显示当前文件的编码比如 UTF-8、ANSI 等。正常情况下打开文件时它会自动猜测编码但偶尔会猜错尤其在 ANSI 环境下的中文字符。如果你的文件显示乱码可以依次试“编码 - 使用 UTF-8 编码重新打开”或者“编码 - 使用 ANSI 编码重新打开”。日常处理时我几乎一律把文件最终保存为“UTF-8 无 BOM”格式。UTF-8 无 BOM 兼容性最好既不会被老系统的 BOM 头干扰又能正常显示中文。转换时注意先“编码 - 转为 UTF-8 编码”再“编码 - 转为 UTF-8 无 BOM”最后保存。直接“另存为”选择格式有时会保留 BOM 头所以最好用编码菜单里的“转为”选项。7.2 换行符统一跨平台排版不出乱子Windows 下默认换行是 CRLFLinux 和 macOS 下是 LF。如果这两种换行混在一个文件里文本在部分工具里会被显示成乱码或出现多余的^M符号。排版时统一换行符是一个好习惯。Notepad 操作方法右下角状态栏显示当前换行符类型点击它可以切换。也可以“编辑 - 行尾符 - 转换为 Windows 格式”或“转换为 Unix 格式”来批量统一。通常我给 Linux 服务器用的配置文件都统一转成 LF给 Windows 用户看的文本统一转成 CRLF。统一换行符之后再分发能避免大量莫名其妙的兼容问题。8. 高频问题速查与避坑心得8.1 常见问题速查表下面这几个问题是我在实际工作中被别人问过最多的统一整理一下问题现象排查思路解决方案替换 “全部替换” 后内容变得很怪正则表达式写错匹配范围过大先“替换”单次看结果用括号限定边界在小样本上测试中文显示成乱码编码识别错误依次尝试“编码 - 使用 UTF-8 / ANSI 编码重新打开”每行前后有多余空格删不干净没开正则模式或表达式漏了\t勾选“正则表达式”用[ \t]$清行尾宏运行结果和预期不符录制时操作顺序有问题临时文件里先手工演练完整流程再重新录制宏列编辑插入后内容位置不对没注意光标或选区的锚点位置把光标放到目标插入列再执行列编辑8.2 我的几条实操体会踩过几次坑之后我总结了三条心得分享出来希望对你有帮助。第一永远在副本上做批量操作。正则替换和宏都是“破坏性”操作一旦点错Ctrl Z 不一定能救回大量替换。我的习惯是先用“文件 - 另存为”存一个副本再做批量处理。处理完对比无误再删副本。第二正则表达式重在积累。不要想着一次背会所有语法把常用的十几个模式记下来就够用了。比如^\s$清空行、[ \t]$清行尾空格、^.*$匹配整行、(\d{4})-(\d{2})-(\d{2})提取日期等。用多了自然熟练熟练了才有信心处理复杂文本。第三排版这件事要按场景选择合适的工具。Notepad 擅长的是文本清洗、格式转换、批量修改Word 擅长的是图文混排和最终呈现Excel 擅长的是表格计算。做排版前先想清楚你的最终交付物是纯文本、富文本还是表格想明白这一点选择工具才不会跑偏。8.3 最后一个小技巧每次处理完一份重要文件后我都会习惯性地用“视图 - 显示符号 - 显示所有字符”做一次最终检查。肉眼看到行尾符统一、空格小点正常、没有多余的制表符箭头这份文件的排版才敢说真的过关了。这个习惯帮我避免了好多次“看起来没问题、一交出去就出洋相”的尴尬。希望你也能把 Notepad 当成一个真正顺手的排版工具而不是一个“比记事本稍微好用点的软件”。
返回列表