ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Notepad++宏完全指南:录制、编辑shortcuts.xml与批量符号整理

2026/10/4 4:21:30 拓冰建站 浏览量
Notepad++宏完全指南:录制、编辑shortcuts.xml与批量符号整理 简介这份资源聚焦 Notepad 宏功能的实战应用面向需要批量处理文本的编程开发者与文字工作者帮助解决重复编辑、格式转换等低效问题。包内共 2 个文件以 xml 宏配置文件与 txt 说明文档为主压缩包仅 6KB导入后即可直接调用或按需自主编辑。内容整理了多组常用宏脚本涵盖尖括号与转义字符互转、注释与取消注释、删除空行、标记 # 符号、添加引号并替换换行符为逗号等典型场景同时讲解宏的基本概念、创建编辑与运行方法并说明宏文件的具体存放位置初学者也能按引导快速上手。目前已有 1128 人学习下载适合希望借助宏录制与脚本替换提升文本处理效率的读者参考使用。1. Notepad 宏整理从重复劳动里抽身的那个下午如果你每天要在 Notepad 里重复做同一套文本操作——删空行、补分号、批量缩进、给每行加引号——那你迟早会碰到宏这个功能。它不新鲜但真正把它用顺的人不多。多数人卡在两个地方一是不知道怎么把操作录下来二是录完不知道宏文件存哪、怎么改、怎么在另一台机器上接着用。这篇要解决的就是这两件事宏的制作、宏脚本的替换与自主编辑、宏文件位置以及常用符号的整理套路。适合已经会用 Notepad 做日常文本处理、但还没把宏纳入工作流的开发、运维、数据清洗人员。读完你至少能自己录一个宏、找到它的文件、改掉里面写死的参数再把它搬到别的机器上继续跑。2. Notepad 宏是怎么录出来的录制、回放与三个必调参数2.1 录制宏的最小操作路径Notepad 的宏录制入口在菜单栏「宏」下面。整个流程不需要装插件原生功能就够。我一般按这个顺序走打开一个待处理的文本文件把光标放到起始位置。点「宏」→「开始录制」。执行你要重复的那套操作比如按 End 到行尾、输入分号、按 Down 到下一行。点「宏」→「停止录制」。点「宏」→「保存当前录制的宏」给它起个名字比如add_semicolon。这里有个容易翻车的点录制期间 Notepad 会把你每一次按键和菜单操作都记下来包括你不小心按到的方向键。所以录制前先把光标位置摆正录制中不要做任何多余动作。录完先别急着保存点「宏」→「播放当前录制的宏」跑一遍确认结果对再存。2.2 回放时的运行次数与快捷键绑定宏保存之后会出现在「宏」菜单列表里同时可以绑定快捷键。点「宏」→「管理快捷键」→ 找到「宏」分类给你刚存的宏分配一个组合键比如CtrlShift1。这样后面回放就不用每次点菜单。回放有两种方式单次播放和多次运行。多次运行在「宏」→「多次运行宏」里可以指定运行次数也可以勾选「运行到文件末尾」。批量处理整份文件时我通常用「运行到文件末尾」但前提是你的宏每次循环都会把光标往下推一行否则会原地死循环。提示录制宏时如果用了 CtrlH 替换对话框回放时对话框会重新弹出并等待输入这通常不是你想要的效果。批量替换建议直接用「宏」菜单里的「查找并替换」录制或者改用 Python Script 插件写脚本。2.3 宏的保存与命名规范宏保存后并不是存在当前文件里而是写进 Notepad 的配置文件。命名上我建议用「动作_对象」的格式比如trim_trailing_space、wrap_with_quotes不要用「宏1」「宏2」这种名字。原因很简单等你攒了十几个宏菜单里全是「宏1」你根本认不出哪个是哪个。命名规范这件事看起来小但它是后面能维护宏的前提。3. 宏文件位置与宏脚本替换找到 shortcuts.xml 并改掉写死的参数3.1 宏文件到底存在哪Notepad 的宏不是独立文件它存在配置目录下的shortcuts.xml里。具体路径取决于你的安装方式安装方式配置目录位置安装版默认%APPDATA%\Notepad\shortcuts.xml便携版Notepad 程序目录下的shortcuts.xml部分旧版本程序目录下的config\shortcuts.xml在 Notepad 里点「设置」→「首选项」→「其他」能看到「配置文件路径」一栏直接点进去就是。找到shortcuts.xml后用 Notepad 自己打开它你会看到Macros节点里面每个Macro就是一条宏。3.2 读懂 shortcuts.xml 里的宏结构一条典型的宏在 XML 里长这样Macro nameadd_semicolon Ctrlno Altno Shiftno Key0 Action type1 message2170 wParam0 lParam0 sParam / Action type0 message2453 wParam0 lParam0 sParam; / Action type1 message2170 wParam0 lParam0 sParam / /Macrotype0表示发送字符sParam就是实际输入的字符type1表示发送命令消息message是 Scintilla 的消息号。上面这段的意思是End 到行尾、输入分号、Down 到下一行。3.3 替换宏脚本的实操步骤所谓「宏脚本替换即可使用」核心就是改shortcuts.xml里的sParam和message。比如你录了一个给每行加双引号的宏但想改成加单引号不需要重新录直接改 XML!-- 改之前sParamquot; -- Action type0 message2453 wParam0 lParam0 sParamquot; / !-- 改之后sParam -- Action type0 message2453 wParam0 lParam0 sParam /改完保存shortcuts.xml重启 Notepad宏就生效了。注意 XML 里双引号要写成quot;单引号可以直接写。这是替换宏脚本最直接的方式不用装任何插件。注意改shortcuts.xml前先备份一份。Notepad 退出时会重写这个文件如果你在 Notepad 运行期间改退出时可能被覆盖。3.4 用 Python Script 插件做更复杂的宏替换原生宏只能录按键序列遇到条件判断、循环、正则替换就力不从心。这时候常见做法是装 Python Script 插件写脚本代替宏。安装方式插件 → Plugins Admin → 搜索 Python Script → 安装 → 重启。装好后在「插件」→「Python Script」→「新建脚本」里写# 给当前文件每一行末尾加逗号跳过空行 editor.beginUndoAction() line_count editor.getLineCount() for i in range(line_count): line editor.getLine(i) if line.strip(): # 跳过空行 editor.setSel(i, len(line) - 1, i, len(line) - 1) editor.replaceSel(,) editor.endUndoAction()beginUndoAction和endUndoAction把整批操作合成一次撤销避免按一次 CtrlZ 只回退一行。getLineCount拿总行数getLine拿指定行内容setSel定位到行尾replaceSel插入字符。这个脚本比录制宏灵活得多适合处理「跳过空行」「按条件加符号」这类需求。4. 常用符号整理批量加引号、去空行、补逗号的宏写法4.1 常用符号整理的典型场景「常用符号整理」这个说法听起来泛落到实际工作里就是几件事给每行加引号、给每行末尾补逗号、去掉行首行尾空白、把连续空行压成一行、在等号两边加空格。这些操作单独做一次不费事但面对几千行配置或数据时手工做就是折磨。宏的价值在这里体现得最明显。4.2 给每行加引号的宏与脚本录制方式光标放到第一行行首 → 开始录制 → 输入→ End → 输入→ Down → Home → 停止录制 → 保存为wrap_quotes。回放时用「运行到文件末尾」。如果行数多、想跳过空行用 Python Script 更稳# 给非空行首尾加双引号 editor.beginUndoAction() for i in range(editor.getLineCount()): line editor.getLine(i).rstrip(\n) if line.strip(): editor.setSel(i, 0, i, len(line)) editor.replaceSel( line ) editor.endUndoAction()rstrip(\n)去掉行尾换行符避免引号加到换行后面。setSel选中整行内容replaceSel用带引号的新内容替换。4.3 去空行与补逗号的组合宏去空行用原生宏不好录因为「删除当前行」这个动作在空行和非空行上行为不同。我一般直接用正则替换CtrlH → 查找模式选「正则表达式」→ 查找\r\n\r\n→ 替换为\r\n→ 全部替换。反复执行直到没有连续空行。补逗号可以用宏End → 输入,→ Down。但如果最后一行不需要逗号回放时要手动控制次数或者用脚本判断# 给非空行末尾补逗号最后一行不加 editor.beginUndoAction() last editor.getLineCount() - 1 for i in range(editor.getLineCount()): line editor.getLine(i).rstrip(\n) if line.strip() and i ! last: editor.setSel(i, len(line), i, len(line)) editor.replaceSel(,) editor.endUndoAction()i ! last这个判断就是原生宏做不到的地方。这也是为什么我建议简单重复操作用宏带条件的用 Python Script。4.4 符号整理的参数对照表需求原生宏能否实现推荐方式关键参数每行加引号能宏或脚本起始列、结束列跳过空行加符号不能Python Scriptline.strip()判断去连续空行不能正则替换\r\n\r\n→\r\n行尾补逗号能宏End 输入 Down等号两边加空格能宏查找替换录制5. 避坑与排查宏用不起来时先看这五条5.1 宏回放后光标位置错乱现象宏跑完内容对了但光标停在奇怪的位置下一次回放结果就偏了。原因录制时包含了多余的方向键或 Home/End 操作导致每次循环起点不一致。解决重新录录制前把光标放到固定起点录制中只保留必要动作录完先单次回放验证光标落点。5.2 改了 shortcuts.xml 但宏没变化现象按教程改了shortcuts.xml重启后宏还是老样子。原因Notepad 正在运行退出时用内存里的配置覆盖了你改的文件或者你改的是安装目录下的文件而实际生效的是%APPDATA%下的。解决先完全退出 Notepad再改文件改之前用「首选项」→「其他」确认配置文件路径。5.3 宏在别的机器上导入后快捷键冲突现象把shortcuts.xml拷到另一台机器宏能用但快捷键和已有绑定冲突。原因shortcuts.xml里同时存了宏定义和快捷键映射直接覆盖会带入对方的快捷键。解决只拷贝Macros节点内容合并到目标机器的shortcuts.xml里快捷键在「管理快捷键」里重新分配。5.4 Python Script 脚本报错找不到 editor现象脚本运行提示NameError: name editor is not defined。原因脚本没有在 Python Script 的上下文里运行或者插件没装好。解决确认插件已安装并重启脚本要通过「插件」→「Python Script」→「执行脚本」运行不要用外部 Python 解释器直接跑。5.5 宏处理大文件时卡死现象几千行文件用宏「运行到文件末尾」Notepad 无响应。原因每次 Action 都触发一次界面刷新行数多时累积开销大。解决改用 Python Script 配合beginUndoAction/endUndoAction或者先用宏处理小批量大文件用正则替换一次性完成。6. 把宏文件纳入版本管理一个让我少加班的小习惯宏用顺之后真正让我省事的不是录宏本身而是把shortcuts.xml里Macros那段单独抽出来放进 Git 仓库。做法很简单在仓库里建一个notepadpp-macros.xml只存Macros节点换机器时把内容合并进目标机器的shortcuts.xml。这样宏的增删改都有记录改坏了能回滚团队里也能共享同一套符号整理规则。验证宏是否真的生效我一般用这个最小测试集准备一个 5 行的测试文件包含 2 个空行、1 行带尾随空格、1 行正常内容。跑一遍宏检查空行是否被跳过、尾随空格是否被处理、正常行是否被误改。这个测试集我放在仓库里每次改宏先跑它。验证项预期结果不通过时先查空行处理空行不被加符号脚本里有没有strip()判断尾随空格被清除或保留一致宏里有没有多余 End正常行只加一次符号回放次数和光标起点最后一行按需求决定是否处理i ! last判断撤销一次 CtrlZ 全部回退有没有beginUndoAction血泪经验是不要等到宏攒了二十个才想起来整理。我现在的习惯是每加一个新宏顺手在notepadpp-macros.xml里加一行注释说明用途改完跑一遍那个 5 行测试集。这个习惯花不了两分钟但省掉的是后面排查「这个宏到底改了啥」的半小时。希望帮到你。本文还有配套的精品资源点击获取