
Notepad 我用了少说也有十年Windows 上换过不少编辑器最后桌面右下角一直留着的还是它。启动快、体积小、不折腾这些优点说了无数遍但真正把它用顺手之后处理日志、改配置、批量修文本的效率完全不会比任何重量级 IDE 差。今天这篇文章不聊怎么安装也不列官方的功能清单我只讲这些年实际用下来真正能提升效率的操作。从界面布局、多行编辑、正则替换、宏录制到插件扩展每一节都是可以直接照着做的实战经验。适合每天跟代码、配置文件、日志文本打交道又不想被大编辑器拖慢节奏的朋友参考。1. 布局与视图编辑区也能一心二用1.1 双视图拆分一块屏幕放两个工作区很多人不知道 Notepad 可以把同一个文件拆成两个视图并排看或者同时打开两个文件做左右对照。操作入口藏在“视图”菜单里路径是“视图 → 移动/复制当前文件 → 复制到新视图”。执行之后顶部会出现两个 Tab文件内容被分到左右两个窗格两边可以独立滚动。这个功能我在两类场景里用得最多。第一类是写 HTML 和 CSS 的时候左边放结构源码右边放样式源码改一处立刻看另一处对应关系第二类是处理配置类文本比如 nginx 配置和本地测试配置需要一行一行对比差异时双窗格比切 Tab 舒服得多。还有一个小技巧两个视图针对同一个文件时编辑是实时同步的。也就是说你不需要手动保存再刷新一边改动另一边马上能看到。配合“视图 → 同步垂直滚动”菜单可以做到两个窗格滚动位置一致逐段对照非常方便。注意复制出来的是同一份文件的另一个视图不是另一个副本。你在 A 窗格删了一行B 窗格会同步变化别把它当成文件级别的“复制备份”来用。1.2 显示符号与全屏让隐藏字符现出原形文本处理里最常见的坑之一就是“看不见”的字符在捣乱。比如复制了一段配置执行时总报错检查了半天发现在行尾混了全角空格或者换行符跟脚本预期不一致。这种情况下一定要开启“视图 → 显示符号”里的相关选项。我个人的习惯是长期开着“显示空格与制表符”和“显示行尾符号”。打开之后空格显示为小圆点Tab 显示为箭头回车换行会显示为专门的行尾标记。一开始可能觉得视觉上有噪音但只要适应一周排查格式问题的速度会提升一大截。尤其是跟别人协作修改同一个文件或者从网页、PDF 里复制内容时这种可见性几乎是救命级别的。另一个容易被忽略的是 F11 全屏模式。写代码或整理长文本时窗口顶部工具栏、菜单栏占掉的空间其实不小。按 F11 把界面切到全屏只保留编辑区和基本状态栏专注度会明显上升。再按一次 F11 就能退回普通窗口。1.3 缩放与快速定位处理长文件的三个快捷键长文件滚动查找其实是低效操作。Notepad 里有几个快捷键我每天都会用。Ctrl 滚轮是缩放字号注意这只是显示层面的缩放不影响文件内容本身也不改变保存后的字体大小。这个功能在共享屏幕或者远程演示时尤其好用不用去改全局设置。Ctrl G 是跳转行号。日志文件动辄几万行报错信息里给你一个行号直接按快捷键输入行号回车比手动滚动快了不知道多少倍。Ctrl Tab 是在最近打开的文件之间来回切换不用鼠标点 Tab 栏特别适合频繁对比两个文件内容的时候用。这三个快捷键都不复杂但组合起来的体验是“用鼠标完成每件事”永远达不到的效率。2. 多行多光标与列模式从一行一行改到一片一片改2.1 Alt 拖拽的列模式水平方向批量操作列模式是 Notepad 区分于普通记事本的核心功能之一但好多人从来没用过。操作方式很简单按住 Alt 键然后用鼠标拖拽你会发现选区不再是连续的行而是一个矩形块。这个矩形块可以横跨多行并且竖向位置完全对齐。列模式能干什么举三个最常见的场景。场景一给多行文本统一加前缀。比如你有一份名单需要每行前面加一个“- ”直接 Alt 拖选所有行的开头位置输入“- ”就完成了不用一行一行去改。场景二批量删除表格中间某一列。打开一份以空格或 Tab 对齐的 tabular 数据按住 Alt 拖选中间那列区域按 Delete 键直接删掉整列剩下的列会自动合拢比用 Excel 还快。场景三给多行代码统一加注释。选中多行代码前的列区域输入“// ”或“# ”就完成了批量注释。想反悔就再选一次按 Delete。列模式里输入内容时会同时作用到所有选中行这个特性在用的时候要小心。如果只是想临时插入选中的列区域不能太宽否则新输入的文字会把原有内容“顶开”虽然通常不会丢失原有字符但排版会打乱。2.2 多点编辑同时改多处相似内容除了列模式Notepad 还支持在多个位置同时放置光标。按住 Ctrl 键用鼠标在文件不同位置点击就会产生多个光标。这时候输入的任何内容、按的任何退格键都会同步作用于所有光标位置。这个功能在重命名局部变量、批量修改重复结构时非常高效。举个例子一个脚本里有十几个相同格式的配置项其中某个参数名要改动。你不需要逐个查找直接 Ctrl 鼠标在每个参数名后点出光标统一输入新值一次搞定。多点编辑和查找功能组合起来更顺手。先用 Ctrl F 输入要找的词点击“查找全部”Notepad 会把所有匹配行列出来并且高亮匹配位置。这时候用“标记”或者结合多光标点击就能快速定位到所有目标点。对于重复性极强的修改任务这个组合拳比正则替换更直观因为你能看到每个位置再动手。2.3 列模式配合宏的思想先选区域再批量处理很多人以为列模式只能处理“矩形”区域其实它还可以配合宏完成更复杂的重复操作。思路是先通过列模式选中一批目标行再对其中某一行执行一次操作比如格式化然后让宏把这一行的操作回放到其他行。实际操作中我经常这样组合先用正则把所有需要处理的行筛选出来再用列模式在多行开头设置基线最后通过宏补齐后续动作。三个工具各管一段思路清晰出了错也好排查。3. 查找与替换的高阶用法正则不仅仅是程序员专利3.1 先搞清楚几个高频快捷键查找替换相关的快捷键是 Notepad 里使用频率最高的命令。F3 是查找下一个Shift F3 是查找上一个Ctrl H 是打开替换对话框Ctrl F 是打开搜索框。还有一个很少有人注意的在文件里选中一个词直接按 Ctrl F3会立刻跳转到下一个匹配位置省去打开搜索框再输入关键词的步骤。替换对话框里“替换当前”和“全部替换”是两个不同危险等级的操作。我从不在不确认的情况下点“全部替换”。即使是替换当前文件里的一个字符串我也会先看一眼右侧的匹配统计确认数量符合预期再动手。跨文件批量替换更不用说了见下文。3.2 正则批量格式化从日志到代码都能省下半天Notepad 的正则引擎支持常见的 PCRE 语法。对大多数用户来说掌握几个核心概念就够用 90% 的场景。第一个是锚点^ 表示行首$ 表示行尾。比如把每行内容用引号包起来可以在替换框里填 ^(.)$替换成 $1这里的 $1 代表第一个括号捕获的内容。注意 NPP 的替换语法里捕获组用的是 \1 而不是 $1但最新版本里也接受 $1。我发现自己用 \1 更稳不同版本兼容性更好。示例查找 ^(.)$替换为 \1就能给全文的每一行加上英文双引号。第二个是字符类\d 表示数字\s 表示空白字符\w 表示单词字符。比如要压缩连续多个空行为一个空行查找 \n\s*\n替换为 \n就可以把两个换行之间的所有空白都吃掉。第三个是非贪婪匹配正则默认是贪婪的也就是能多匹配就多匹配。比如在 HTML 中匹配...如果写.可能一次会吃掉一大段内容。改成. ?就会匹配尽量短的区间。这个坑我踩过很多次写替换时一定要反复确认匹配范围。3.3 跨文件查找与替换改整个目录的利器按 Ctrl Shift F 打开“在文件中查找”对话框可以指定目录、文件类型过滤条件比如.txt;.log;*.html然后在整个目录中搜索关键词。搜索结果会集中显示在底部面板双击任意一条结果就能跳到对应文件的具体位置。跨文件替换的操作顺序也有讲究。第一步先做“查找全部”看匹配到的文件列表和行数是不是符合预期第二步再做“替换全部”。如果条件允许我还会先在测试目录上跑一遍确认格式正确后再正式执行。因为跨文件替换一旦执行就是不可逆的NPP 的撤销操作往往只能针对当前文件生效没法一次撤销所有文件的修改。强烈建议任何涉及多文件的批量替换动手前先把整个目录备份一遍或者用版本管理软件提交一次变更。文本处理工具再高效也弥补不了没有备份带来的损失。3.4 正则里的常见坑正则表达式写得越多踩的坑就越深总结几个经常遇到的问题。\d 和 [0-9] 基本等价但碰到中文全角数字就不匹配。处理中文文本时最好直接写具体关键词别硬用字符范围。. 默认不匹配换行符。想跨行匹配时用 [\s\S] 代替点号比如匹配多行注释/*[\s\S]*?*/。替换空行时勾选正则模式后查找 ^$ 能匹配真正的空行但如果行尾有空格^$ 匹配不了得用 ^\s*$。大小写匹配选项默认不开启替换时如果不勾选会误伤所有大小写变体。正则这种工具平时觉得用不上一旦开始用就会发现它能解决一批“看似只能手工处理”的问题。前提是多留几个测试样例别把正式数据当成小白鼠。4. 宏录制把重复性操作交给编辑器4.1 录制与回放你操作的每一步都能重放宏是 Notepad 里最被低估的功能之一但它其实特别简单你操作一遍编辑器把动作记录下来然后可以重复执行很多次。入口在菜单“宏 → 开始录制”。之后的所有键盘输入和菜单操作都会被打进“录像带”操作完点击“宏 → 停止录制”然后保存成一个带名字的宏。回放时打开“宏 → 运行宏”可以选择运行次数也可以绑定一个快捷键。比如我经常在批量处理配置文件时录入一个“移动到行首添加井号和空格跳转到下一行”的宏然后运行几十次原本需要几十次重复操作的工作几秒钟就结束了。这也让我养成了一个习惯任何需要重复三遍以上的操作我都会停下来想一想能不能用宏记录一遍。大部分情况的答案都是能。4.2 录制技巧别把鼠标点选录进去宏记录的核心是连续、可复现的动作。最容易出的问题是录制过程中用鼠标进行了位置选择比如点击编辑区某处那么回放时宏可能会在错误的位置执行操作甚至直接跳到文件的另一端。我的经验是录制宏时尽量只用键盘。方向键移动光标、Home 和 End 跳行首行尾、Ctrl C 复制、Ctrl V 粘贴这些键盘操作非常稳定。相反鼠标点击、拖动选区这类动作除了基础的菜单点击其余尽量少用。录制过程中也不要包含“保存文件”“关闭文件”这种高危害操作。万一宏误触发了保存会覆盖掉你辛苦整理的内容。正确的做法是先对当前文件做一个副本再开始录制和运行。4.3 宏与书签组合只处理部分行有时候我们并不是要处理整个文件的所有行而只对符合条件的部分行做操作。这种情况怎么用宏我的办法是先用“搜索 → 查找全部”找到目标行然后给这些行加上书签。书签的快捷键是 Ctrl F2设置/取消书签F2 跳到下一个书签Shift F2 跳到上一个书签。然后录制宏时把“跳到下一个书签”作为宏动作的一部分这样运行宏时每步都会自然落到下一个目标行精准又不会漏。宏配置会保存在 Notepad 的配置文件里如果你在多台电脑上工作备份目录下的 shortcuts.xml 就能把宏带到另一台机器继续用。5. 插件生态从文本编辑器到轻量工作站5.1 插件管理新老版本的两个入口新版 Notepad 内置了 Plugins Admin在菜单“插件 → Plugins Admin”里可以搜索、勾选、安装插件再重启编辑器生效。老版本则是用 Plugin Manager 插件管理。如果你的软件版本比较旧建议先升级到新版管理插件的体验好很多。离线安装插件也不复杂。从插件官网或 GitHub 下载对应版本的压缩包解压后放到 Notepad 安装目录下的 plugins 文件夹重启编辑器即可。一定要注意插件位数必须和 Notepad 一致64 位安装包对应 64 位插件版本对不上会直接无法加载。提醒安装过多插件反而会拖慢启动速度。我的原则是只装真正高频使用的三到五个其余的绝不多装。5.2 实用插件清单和使用场景下面这几个插件是我不同时期用过的按照实用程度排了个序。插件用途典型场景Compare文件对比高亮差异行对比本地文件和线上配置、对比两个版本代码NppExec在编辑器内执行命令一键运行 Python、编译 C/C、执行 shell 命令Explorer文件树侧边栏在编辑器里直接浏览项目文件结构MarkdownViewerMarkdown 预览写 README、维护文档时实时看渲染效果JSON ViewerJSON 格式化和树形查看处理接口返回的 JSON 数据Compare 的使用频率对我来说是最高的。打开两个文件点击“插件 → Compare → Compare”编辑器会清晰地高亮两个文件的差异行再用导航按键在差异之间跳转。核对配置改了什么、代码差异在哪几秒钟就能定位完比肉眼核对高效太多。5.3 NppExec 一键运行脚本NppExec 可以让我不离开编辑器就运行脚本。配置方法不复杂菜单“插件 → NppExec → Execute”在弹出的框里输入命令序列。比如运行当前 Python 文件npp_save cd $(CURRENT_DIRECTORY) python $(FULL_CURRENT_PATH)第一行表示保存当前文件第二行把工作目录切到当前文件所在文件夹第三行用 Python 执行当前文件。$(CURRENT_DIRECTORY) 和 $(FULL_CURRENT_PATH) 是 NppExec 的内置变量分别代表目录和完整路径。执行之后控制台会输出运行结果如果有语法错误可以直接看到错误位置。把这个执行命令保存成宏再绑定到 F6 快捷键以后写 Python 脚本就可以 F6 一键运行。写 C/C 的也可以用 gcc 替换 Python逻辑完全一样。5.4 用 Compare 做代码对比的小技巧Compare 插件的颜色高亮默认是绿色代表新增红色代表删除橙色代表修改。对比完成之后如果文件是编码不同的两个版本很多差异其实是换行符或 BOM 造成的。这时候先在菜单“插件 → Compare → Set as First Compare / Set as Second Compare”之外手动把两边编码统一再做对比结果才准确。对比完成后记得用“插件 → Compare → Clear All Flags”清除对比状态否则绿色跟着保存进文件会让人误以为改动区域还在。6. 编码、格式与大文件稳定运行才是高效的前提6.1 编码转换乱码的根源和解决办法Notepad 的“编码”菜单藏着处理乱码的核心能力。文件打开乱码时常见的处理路径是先看状态栏显示的编码名再在“编码”菜单里切换几种常见编码方式比如 UTF-8、ANSI、GB2312观察哪个能正常显示。能正常显示后再用“转为 UTF-8 编码”或“转为 ANSI”进行真正的内容转换。注意“编码”菜单里的“转为 UTF-8”和“以 UTF-8 编码读取”是两回事。前者会改写文件内容编码后者只是换一种解码方式。不确定时我的经验是先选编码方式看预览预览正确了再找转换选项千万不要上来就点“转为 UTF-8”否则可能把原来的 ANSI 内容存成乱码。BOM 是另一个绕不开的话题。UTF-8 带 BOM 会在文件开头多出几个不可见字节很多脚本语言和执行环境遇到 BOM 会直接报错。团队协作时最好统一使用不带 BOM 的 UTF-8。在 Notepad 中处理带 BOM 文件可以用“编码 → 转为 UTF-8 编码”来去掉 BOM。6.2 换行符混用Windows、Unix 和 Mac 的恩怨换行符有三种常见表示Windows 用 CRLF\r\nUnix/Linux 用 LF\n旧版 Mac 用 CR\r。如果文件里的换行符不统一脚本可能报错Git 提交时也会出现大量莫名其妙的 diff。在 Notepad 里编辑 → 行尾转换有三个选项可以一键转换当前文件的所有换行符。日常处理文件时我习惯先看一眼状态栏右下角显示的行尾类型。从 Windows 拷贝到 Linux 服务器的脚本务必转成 UnixLF否则常见报错都是“找不到命令”或“语法错误”。6.3 大文件打开卡顿的处理方案几百 MB 的日志文件Notepad 也能打开但默认配置下会比较卡。卡顿的根源通常不在编辑器本身而是实时高亮、文档地图、自动补全这些“贴心的功能”在拖后腿。遇到大文件我有两个常用手段。第一个是在“设置 → 首选项”中找到性能相关选项关闭“实时高亮”和“文档地图”。第二个是临时用无插件模式启动 editor命令行里用 notepad.exe -noPlugin 启动所有插件都不加载启动和操作流畅度能提升一个档次。虽然日常使用中我不建议关掉这些功能但处理超大日志时稳定打开比什么都重要。文件看完就把内容另存为处理结果别让编辑器一直扛着十几万行的原始数据。7. 常遇到的坑与排查思路7.1 常见问题速查表现象可能原因解决办法插件列表是空的插件目录不对或版本位数不匹配确认插件放在 plugins 目录且位数与 NPP 一致替换后文本变成 $1替换框里用了正则捕获但模式没勾选用 \1 引用捕获组并勾选正则模式打开文件乱码文件实际编码与当前解码不一致用编码菜单切换编码方式预览文件内容被意外覆盖列模式或宏误操作批量操作前先保存副本随时CtrlZ局部撤销启动变慢插件装太多只保留高频插件必要时用 -noPlugin 启动会话文件找不到了未保存会话或工作区被清理用“文件 → 保存会话”把常用文件列表保存7.2 我踩过的几个坑第一个坑是替换时用 $1 却忘了勾选正则。结果替换完所有匹配位置都变成了字面字符串“$1”看着让人血压飙升。后来我养成了每次替换前先看“替换当前”的预览结果确认无误再执行全量替换。第二个坑是列模式误操作。有一回要在几十行文本的某一列插入内容结果拖选范围稍微大了点插入的内容把原有字符顶得七零八落因为没备份只能重来一遍。从那以后凡是碰到批量操作我第一件事永远是复制出一份带 .bak 后缀的副本。第三个坑是默认的正则匹配范围过大。比如用 .* 匹配 HTML 标签时因为点号无法匹配换行贪婪匹配会吃掉一大堆内容。后来我把正则测试习惯固定成“替换当前”先试一次用两次验证替换结果几乎不再出这种问题。7.3 一套完整的批量处理组合拳最后分享一个我处理结构化文本时的完整套路算是组合应用前面所有技巧。假如我有一份混着多余符号和空行的地址列表需要整理成规范的“编号 - 城市 - 地址”格式。我会先复制一份副本然后用正则把每行首尾的多余符号清理掉再用列模式在每行的固定位置统一加分隔符最后用宏处理重复性高的末尾补充操作。整个过程大概三分钟如果纯手工操作可能要半小时。执行过程中每个步骤之前我都会先小范围试一次确认输出符合预期再跑整体。这些年处理文本的效率其实就是靠这些“老工具里的新思路”积累起来的。用久了你会发现Notepad 真正拉开差距的不是某个惊为天人的功能而是把高频动作固化成了肌肉记忆。工具是老工具但用的人讲究一点它就能少给你添乱。