资讯详情

资讯详情

Notepad++高效排版技巧:正则、列模式与批量编辑实战

经常有人丢给我一份乱糟糟的文本、日志、表格数据让我帮忙“理一理”。不管是几十行还是几万行我第一反应基本都是打开 Notepad。不是因为它功能多花哨而是这个老牌编辑器在“高效排版”这件事上确实能打——轻量、启动快、查找替换强、列编辑顺手还能用插件补足格式化的短板。这篇内容不聊那些人人都知道的常规用法重点把我在实际处理文本排版时最常用、也最容易被忽略的技巧拆开讲覆盖正则批量处理、列块编辑、编码坑、格式化插件、宏与脚本、绿色版配置迁移等几个方向。不管你是第一次用 Notepad还是用了很久的老手应该都能找到能直接用上的东西。1. 排版的第一步让字符与视图状态“显形”1.1 打开“显示所有字符”先看清排版问题在哪处理排版问题最怕的不是格式乱而是你根本看不见格式。很多人拿到一段缩进错乱的代码或者行尾带空格的文件肉眼很难发现异常只知道“看起来怪怪的”。我拿到任何待整理的文件做的第一件事永远是开启“显示所有字符”菜单栏点视图 → 显示符号 → 显示所有字符或者用快捷键CtrlShift8切换。开启之后空格会显示成灰色小点制表符会显示成箭头行尾会显示为特定的段落标记段落末尾如果是 CRLF 换行还能看出 Windows 换行符的样子。这一步看着不起眼实际能解决很多莫名其妙的排版问题。比如表格里的数据明明看着对齐了粘贴到别处却全乱了多半是因为有的地方是空格、有的地方是制表符代码缩进有的用 Tab、有的用四个空格混在一起视觉上没问题但在其他编辑器或者 Git 差异对比里就是灾难。这些在“显示所有字符”模式下全都无所遁形。1.2 统一缩进规则Tab 与空格的取舍排版里最核心的一项工作就是统一缩进。Notepad 默认勾选了“使用 Tab 键缩进”但很多项目规范要求的是空格缩进也有反过来要求必须用 Tab 的。不管哪种关键在于统一。打开设置 → 首选项 → 语言 → 制表符设置这里可以针对每种语言单独设置缩进宽度和是否用空格替代 Tab。我个人的习惯是对所有常见语言统一设置成“缩进 4 个空格”并把“使用 Tab 键缩进”的勾选去掉让 Tab 键自动输出四个空格。这样虽然文件里没有任何真正意义上的 Tab 字符但每次按 Tab 都能获得稳定的缩进手工调整层级时也不会因为制表符显示宽度不一致而错位。对于已经混乱了缩进的文件还有一个快速补救方法全选内容CtrlA执行编辑 → 行操作 → 按空格缩进 / 按 Tab 缩进或者反过来用“移除缩进”。批量缩进和反缩进在整理第三方代码时尤其好用。另一个更精细的方向是直接对行首空白做正则替换这个放到下一节展开。1.3 等宽字体、字号和自动换行的取舍排版排版字符摆得整齐才是关键。看代码和表格数据必须用等宽字体不然不同行的字符宽度对不齐缩进看着都像歪的。Notepad 默认的 Consolas 其实够用但我个人更推荐 JetBrains Mono 或者开源的中文混排字体更纱黑体Sarasa Mono SC。尤其是内容里中英文混排比较多的更纱黑体会比纯英文等宽字体舒服很多中文不会挤成一团英文和数字也保持等宽的整齐感。字体和字号在设置 → 语言格式设置里全局调整也能针对每种语言单独定制。关于自动换行我想多说一句。很多人在 Notepad 里打开长行文本发现只在窗口内折行显示担心文件本身被改了——其实菜单视图 → 自动换行只是显示层面的折行并不会往文件里插入真实的换行符。这一点很重要做排版之前要分清楚你想要的到底是“显示上折行方便阅读”还是“物理上把行切成多段”。如果是后者应该用编辑 → 行操作 → 拆分行之类的功能或者用正则把行尾某种分隔符替换成真正的换行。自动换行和拆分行是两种完全不同的需求别混在一起用否则要么白改一通要么把数据弄坏。2. 查找替换驱动的批量排版正则表达式才是主力2.1 为什么排版效率的提升主要靠查找替换Notepad 的查找替换是它最值钱的功能尤其是勾选“正则表达式”之后整段文本的批量处理效率可以提升一个数量级。手工排版一次改一行正则排版一次改一万行差别就在这里。我平时拿到一个大文件第一件事永远是先观察内容的重复模式然后转化成正则表达式去替换而不是手动删改。进入查找替换的快捷键是CtrlH对话框左下角有三种搜索模式分别是普通、扩展和正则表达式。处理复杂排版时直接选正则表达式。需要注意的是扩展模式支持\r、\n、\t这类转义字符但它不是正则不支持字符集和量词正则模式里同样支持\n、\t这些写法所以大部分场景直接选正则就对了。2.2 高频排版正则去尾空格、合并空格、去空行我列几个几乎每次整理文本都会用到的正则。先在“显示所有字符”模式下看清问题然后对应着选。第一个是清理行尾空格。做文本对比、提交代码时行尾空格很碍事而且关键技术行尾空格往往是肉眼看不见的。查找[ \t]$替换为空字符串一次就能把全文每行尾巴上的空格和 Tab 清理干净。第二个是合并多个连续空格。从网页或者 PDF 复制出来的文本常常每行缩进和间隔都乱七八糟多个空格连在一起。查找[ ]{2,}替换成一个空格能立刻把段落压齐。注意正则方括号里放一个普通空格不要把\s用在这里因为\s匹配的范围还包括换行符和 Tab容易误伤文内结构。第三个是删除空行。如果文件中存在大量纯空行查找^[ \t]*$\r\n替换为空。这个写法的关键点在于^[ \t]*$匹配一个“行内只有空白”的行\r\n再把这一行的换行符一起吃掉否则只匹配行内容不删换行替换完后会留下一堆半截空行。如果文件是 LF 换行的话把末尾的\r\n改成\n即可。还要提一个很多人会踩的坑空行合并这种替换有时候一次“全部替换”并不能把连续多行空行全部处理干净因为多行空行文本中两个空行之间会有重叠匹配的问题。此时不要慌再点一次替换通常第二次就能把残留的再清一层动手两次是正常现象。2.3 统一行首缩进与全角半角清理整理代码或者配置文件时还经常遇到行首缩进混乱的问题有的是两个空格有的是四个空格有的是 Tab。如果只是单纯对齐到统一宽度可以分段处理先把所有行首空白替换成固定标记例如查找^[ \t]替换为MARK然后统一把MARK替换成目标缩进例如四个空格或一个 Tab。如果是想取消所有缩进重新排直接替换^[ \t]为空即可。这种“先归一后替换”的思路在处理复杂格式时非常常用比指望一条正则包打天下靠谱得多。另外中文内容里全角空格、全角标点也经常混进文本中。全角空格可以直接在查找框里粘贴一个全角空格字符U3000替换成半角空格或空字符串全角标点替换成半角时要注意上下文不要一股脑全换比如中文文本通常习惯全角逗号和句号但代码和英文文档里必须用半角标点。我一般先把全角标点都替换成半角再用语言格式化工具过一遍效率更高。2.4 在文件中查找替换批量文件排版很多人的排版任务不只是单个文件而是一整个目录下的几十、上百个文件。Notepad 的查找替换对话框上有一个标签页叫“在文件中查找”和“在文件中替换”可以跨文件批量操作。填好目录和文件通配符后会递归处理符合条件的文件替换完成后还会给出每个文件的命中数量列表。这个功能在批量清理旧项目的行尾空格、统一缩进时特别好用。不过批量替换一定要谨慎因为改动是不可逆的建议操作之前先把整个目录复制一份备份或者在“在文件中替换”时勾选“保留已修改文件的备份副本”让 Notepad 自动生成.bak文件这一步能帮你省掉大量后悔药。3. 多光标与列块模式表格化排版的隐形利器3.1 列块模式按形成排版的真正核心Notepad 的列块模式很多人听过但没用熟。它能在多行文本中按“矩形区域”进行选择和编辑非常适合处理表格类数据、固定多列的内容、以及在多行同一位置加内容。进入列块模式的方法按住Alt 键同时用鼠标左键拖拽选择一块矩形区域或者按住ShiftAlt再用方向键移动光标扩展选区。选中的矩形区域可以整体输入内容、整体删除、整体粘贴选区内每个行的那一列都会被同时修改。举个实际例子。比如一份设备清单文本每个设备行尾部都没有空格直接贴着一列型号读起来很挤。我想在设备名末尾统一加一个固定宽度分隔符就可以用 Alt 列选按下 Alt从第一行的目标列位置拖到最后一行的同一列输入分隔符如|这一列所有位置会同时插入瞬间完成对齐。3.2 多光标编辑多处同时插入同一内容除了列模式之外“多光标”是另一个提升排版效率的功能。操作方法是按住Ctrl 键用鼠标在需要编辑的多处位置分别单击就会放置多个光标。之后你输入任何字符所有光标位置会同步输入相同内容按退格键也会同步删除。这个功能在做批量加注释标记、多行加前缀后缀时非常顺手比一个个点过去快太多。理论上多光标和列模式可以灵活混用。我的实际经验是列块模式适合处理规则矩形区域多光标适合处理不规则的多点编辑。比如日志文件里每行前半部分是时间戳后半部分是正文我想在所有行的时间戳后面统一加一个空格列块模式就足够了但如果要同时把几个不同位置的关键字加上引号列块选不中多光标就派上了用场。3.3 表格数据的对齐与整理实战处理从 Excel、网页、数据库导出的文本数据时列块模式几乎是必备技能。这些数据往往用 Tab 或逗号分隔在 Notepad 里显示时并不对齐阅读体验很差。我的常规流程是先用查找替换把分隔符统一成 Tab比如把连续的多个空格替换成单个 Tab然后全选文本用菜单编辑 → 行操作 → 按列排序。Notepad 本身有按字母、按数字、按字节等排序方式可以把数据列排序后再用列模式微调对齐。更复杂的对齐需求比如生成 ASCII 表格、把表格行转成 Markdown 格式我会配合正则或宏来完成。这里分享一个把文本转成 Markdown 表格的小套路先把每行数据用管道符|手工或正则补全两端然后在表头下方插入分隔行再用列模式选中管道符之间的竖线批量替换成等号或---就能快速拼出一个可读的 Markdown 表格。具体细节不同数据形态不太一样但核心思想就是用列模式把“同一列”当成一个整体去操作而不是逐行去改。4. 从乱码到乱缩进编码、换行符与格式化插件的配合4.1 换行符CRLF 和 LF 别搞混排版过程中最隐蔽的坑之一就是换行符。同一个文件里如果混着 WindowsCRLF和 UnixLF两种换行检查正则边界、对比差异时都会出各种奇怪问题。Notepad 的状态栏右下角会显示当前文件的换行类型比如Windows (CRLF)或Unix (LF)。批量转换换行符在编辑 → 行操作里有现成选项转为 Windows 格式、转为 Unix 格式、转为 Mac 格式。处理脚本、配置文件时我一般优先转成 LF处理要在 Windows 老软件上打开的文件则保留 CRLF。关键是转换之后重新检查一遍正则替换因为如果原先查找表达式里写死了\r\n转成 LF 后就匹配不到了。4.2 编码乱码的识别与转换实操排版整洁不只是缩进和空格还包括字符编码正常、不乱码。Notepad 打开文件后如果中文显示成乱码常见原因是文件本身是 GBK 编码而 Notepad 按 UTF-8 解析了。这时候不要急着乱改内容正确做法是打开编码菜单找到“使用 ANSI 编码重新打开”或“使用 UTF-8 编码重新打开”尝试用不同编码重新打开文件。通常试到一个编码后中文就能正常显示然后再通过编码 → 转为 UTF-8 无 BOM把文件统一转成 UTF-8。另一个容易被忽略的是 BOM字节顺序标记。UTF-8 文件如果带 BOM文件头会有几个不可见字节在脚本、接口对接、命令行工具中经常引发奇怪问题。Notepad 的右下角或者编码菜单会标明当前编码是“UTF-8”还是“UTF-8-BOM”。如果目标环境对 BOM 敏感转成 UTF-8 无 BOM 后再保存。批量转换文件编码时我会把编码转换和查找替换联动起来先用“在文件中替换”处理内容层面的问题然后用一个简单的命令行工具或在 Notepad 中逐个转换。小批量直接手动作业大批量则用命令写循环更省事。4.3 格式化插件JSON、XML、SQL、HTML 的排版利器不属于代码的纯文本排版Notepad 的基础功能已经够用但遇到结构化文本比如 JSON、XML、SQL人工缩进显然是噩梦。这就要借助插件了。打开插件 → 插件管理 → 显示插件管理在“可用”标签页里搜需要的插件JSTool提供 JSON 格式化和压缩功能插件菜单里选择 JSTool → JSFormat能快速把压缩成一行的 JSON 展开成层级缩进的格式。XML Tools格式化 XML 文件选择 XML Tools → Pretty print也能把混乱的 XML 标签整理成树状缩进。Poor Mans T-SQL Formatter如果经常写 SQL这个插件能把各种关键字对齐、子句缩进非常推荐也可以在插件管理里搜索类似的美化工具。MIME Tools处理 URL 编码、Base64 时顺手。使用格式化插件的经验是“格式化之前先保存一份副本”。Notepad 的撤销历史在切换文件、重启应用后很可能丢失如果格式化插件把整个文件重排成你不想要的样子撤销不回来是很痛苦的。我一般先在另一个标签打开原件再在当前标签做格式化对比满意后再删掉原件标签。另外超大文件几十 MB 以上格式化时插件往往会卡顿甚至崩溃。处理大文件我建议先按某列拆成小块格式化完再合并不要硬碰硬地直接格式化整个超大文件。5. 宏录制与脚本调用把重复性排版动作变成一键操作5.1 宏适合记录可重复的手工键操作在 Notepad 里宏的本质是“录制你的键鼠操作之后可以回放”。使用方法宏 → 开始录制之后执行一系列编辑动作再宏 → 停止录制为宏命名并保存。之后可以随时通过宏 → 运行宏重新执行整段操作。宏适合自动化那些“查找替换表达不了、自己手工又机械重复”的操作。比如你要手动把每个空行上面的内容复制到空行下面这种带上下文关系的操作每行都不同正则很难一次搞定但手工操作却是有固定套路的。录一次之后一遍遍回放即可甚至可以对选区循环执行。不过宏有它的局限录制下来的只是键盘与鼠标操作序列并不理解文本模式如果文件结构跟录制时不一样回放很容易跑偏。因此使用宏之前最好先备份或者在临时副本上测试。5.2 NppExec 与外部脚本批量处理的进阶姿势宏解决键操作自动化真正要处理复杂的排版逻辑还是得让脚本或外部命令介入。Notepad 里的NppExec插件可以在编辑器内执行命令行命令并捕捉输出结果。举例来说想把一个大 JSON 格式化与其依赖卡顿的插件不如直接用外部 Python 工具python -m json.tool 待格式化.json 格式化后.json利用 NppExec 可以把这个命令封装成菜单命令之后选中文件路径一键执行排版结果自动生成新文件。同样的思路可以套用到各种语言格式化工具、文本处理脚本上相当于把 Windows 下的命令行工具全部变成了 Notepad 的排版后处理服务。如果愿意深入还可以装Python Script插件直接在 Notepad 里写 Python 脚本来操纵当前文档。比如批量给每一行增加统一缩进用编辑器对象接口比自己解析文本再回写更稳定。不过 Python Script 插件学习门槛略高初学阶段更推荐先用 NppExec 调用外部命令等有需求了再研究脚本。5.3 实用批量场景按行处理日志与清单日志文件是排版需求最密集的一类材料。比如从某系统导出的日志每行都是时间戳 - 模块 - 级别 - 内容但内容字段里夹杂大量多余空格看起来参差。我的习惯是先用正则把时间戳单独提取出来并统一格式然后对内容字段做整体空格收敛最后用列模式或宏补全对齐符号。还有一个常见的批量需求给清单类文本按顺序编号。最笨的方法是一行行手打编号但还有更快的方式把清单全部按行拆分好然后用“列块模式”在第一列输入统一前缀再用“宏循环”或者 Python Script 给每行递增编号。在没有脚本插件的情况下也可以用查找替换配合文本编辑器的“列模式多行指示”先给每行插入一个占位符再用工具二次替换。总之批量排版的核心思路是先把所有行变得结构一致然后对“每一列”施加批量操作。抓住这个思路处理任何批量文本都不会手足无措。6. 让排版结果更可读自定义语言、高亮与视图风格的细节6.1 自定义语言格式让非主流文本也能高亮很多排版对象不是标准代码而是某种配置文件、日志格式、自动化格式的文本。Notepad 支持语言 → 自定义语言格式可以自己定义关键字、数字、字符串、注释的识别规则和配色。比如我经常处理一种设备配置清单里面有几类固定关键字、若干 IP 地址和状态值我给它定义了一套规则之后再打开这种清单文件所有关键字自动上色结构一目了然。排版不仅是对齐更是让人快速分辨内容层次。自定义语言保存后还可以随时修改字体、颜色和背景。这对于长期处理特定行业文本的人来说几乎等于白捡了一个专用高亮器。设置好之后别忘了关联扩展名在“自定义语言格式”的“语言”下拉里选择扩展名关联下次双击文件就能自动加载高亮规则。6.2 代码折叠与文档地图长文件的结构总览结构复杂的文本单靠缩进已经不够支撑“高效排版”了。Notepad 的代码折叠功能很强在界面上方工具栏有点击折叠的控件可以按缩进层级、按自定义语言的块把内容折叠成一行。排版时先把结构折叠起来只看整体骨架定位明显错乱的章节非常快。文档地图视图 → 文档地图也是我很喜欢的功能它会在右侧显示整个文件的缩略图点击缩略图就能快速跳转。配合折叠和列模式哪怕文件有几千行排版完也能快速通读检查而不是靠滚动翻来翻去效率高很多。6.3 主题、分界线和全局字体长时间排版的舒适度排版是个需要持续盯屏幕的活儿编辑器本身的观感也很重要。在设置 → 首选项 → 主题里可以选择暗色或亮色主题。我个人排版长文件时喜欢暗色主题长时间看屏幕不刺眼字符对比度也高。在设置 → 语言格式设置中还能单独调整默认字体大小防止长时间盯小字号眼睛酸痛。还有一个常被忽略的小选项设置 → 首选项 → 编辑 → 显示分界线。设定一个列宽建议线比如 80 或 120 列编辑时会有一条虚线提醒你“这一列之后的内容可能超出标准宽度”对整理有列宽要求的文档非常有用。我用它处理代码和配置文件时能快速看出哪些行写太长了需要折行或改写。7. 绿色版与配置迁移换个环境排版习惯不丢7.1 官方 zip 绿色版与安装版的差异热搜词里总有人找 Notepad zip 绿色版这其实是很有道理的诉求。Notepad 官方本来就提供 zip 压缩包下载后解压到一个文件夹就能直接运行不写注册表、不产生系统级依赖。对于在 U 盘、移动硬盘、多台电脑间来回切换的人来说这种绿色版就是最省心的形态。安装版的好处是自动关联文件右键菜单把 Notepad 设为默认编辑器更顺畅。但绿色版同样可以通过“在打开的文件的右键菜单中自己选择用 Notepad 打开”来弥补。对我自己来说办公电脑和个人电脑我都偏向用 zip 版因为换电脑之后不用重新配置插件和主题整体体验连续。7.2 配置到底存在哪便携模式与配置迁移很多用户拿到 zip 绿色版后发现改过的配置换一台机器没跟着走这是因为配置文件的保存位置有讲究。Notepad 的配置通常包括config.xml、stylers.xml、shortcuts.xml、session.xml以及插件配置目录plugins/config。安装版默认把这些文件放在系统用户目录如%APPDATA%\Notepad而在可移动环境使用时需要确认编辑器处于便携模式也就是让配置文件跟随主程序目录存放。判断当前配置保存位置有一个简单办法打开设置 → 首选项或者查看“帮助 → Debug 信息”里面会显示配置目录路径。如果你希望做成真正的绿色便携环境建议把整个主程序目录和plugins目录原样打包带走同时把%APPDATA%\Notepad下的配置也同步到同一个随身目录里这样换机器后恢复就不容易丢。7.3 插件、主题和宏的随行备份用绿色版的人通常积累了大量插件、主题和宏这些东西一旦重装系统没提前备份找回来很麻烦。备份策略很简单把主程序目录下的plugins整个目录复制走插件 DLL 和插件的配置文件都在里面主题文件通常在themes目录宏和自定义语言相关配置则集中在config.xml、stylers.xml、shortcuts.xml等文件里。把这些文件放进一个压缩包或者同步到网盘就构成了完整的便携环境。升级版本时也注意别把配置覆盖了先把旧版主程序目录改名备份再把新版解压到原目录名然后把旧版的plugins和配置目录复制回新程序目录中。实测下来这套流程非常稳定插件和主题都能无缝继续使用。唯一要小心的坑是安装版和绿色版混用时会互相覆盖配置和插件导致两边都不对劲选择一个固定形态长期使用会省心得多。我自己到现在还习惯用一份随身 zip 版里面装好了常用的几个格式化插件、定制的暗色主题和几个宏处理临时任务时在任何电脑上一解压就能进入工作状态。排版本就是件琐事工具顺手了琐事也能变成快事。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →