☰
Notepad++宏完全指南:录制、编辑shortcuts.xml与批量符号整理
2026/10/4 4:21:22 网站建设 项目流程

简介:这份资源聚焦 Notepad++ 宏功能的实战应用,面向需要批量处理文本的编程开发者与文字工作者,帮助解决重复编辑、格式转换等低效问题。包内共 2 个文件,以 xml 宏配置文件与 txt 说明文档为主,压缩包仅 6KB,导入后即可直接调用或按需自主编辑。内容整理了多组常用宏脚本,涵盖尖括号与转义字符互转、注释与取消注释、删除空行、标记 # 符号、添加引号并替换换行符为逗号等典型场景,同时讲解宏的基本概念、创建编辑与运行方法,并说明宏文件的具体存放位置,初学者也能按引导快速上手。目前已有 1128 人学习下载,适合希望借助宏录制与脚本替换提升文本处理效率的读者参考使用。

1. Notepad++ 宏整理:从重复劳动里抽身的那个下午

如果你每天要在 Notepad++ 里重复做同一套文本操作——删空行、补分号、批量缩进、给每行加引号——那你迟早会碰到宏这个功能。它不新鲜,但真正把它用顺的人不多。多数人卡在两个地方:一是不知道怎么把操作录下来,二是录完不知道宏文件存哪、怎么改、怎么在另一台机器上接着用。这篇要解决的就是这两件事:宏的制作、宏脚本的替换与自主编辑、宏文件位置,以及常用符号的整理套路。适合已经会用 Notepad++ 做日常文本处理、但还没把宏纳入工作流的开发、运维、数据清洗人员。读完你至少能自己录一个宏、找到它的文件、改掉里面写死的参数,再把它搬到别的机器上继续跑。

2. Notepad++ 宏是怎么录出来的:录制、回放与三个必调参数

2.1 录制宏的最小操作路径

Notepad++ 的宏录制入口在菜单栏「宏」下面。整个流程不需要装插件,原生功能就够。我一般按这个顺序走:

  1. 打开一个待处理的文本文件,把光标放到起始位置。
  2. 点「宏」→「开始录制」。
  3. 执行你要重复的那套操作,比如:按 End 到行尾、输入分号、按 Down 到下一行。
  4. 点「宏」→「停止录制」。
  5. 点「宏」→「保存当前录制的宏」,给它起个名字,比如add_semicolon。

这里有个容易翻车的点:录制期间 Notepad++ 会把你每一次按键和菜单操作都记下来,包括你不小心按到的方向键。所以录制前先把光标位置摆正,录制中不要做任何多余动作。录完先别急着保存,点「宏」→「播放当前录制的宏」跑一遍,确认结果对再存。

2.2 回放时的运行次数与快捷键绑定

宏保存之后会出现在「宏」菜单列表里,同时可以绑定快捷键。点「宏」→「管理快捷键」→ 找到「宏」分类,给你刚存的宏分配一个组合键,比如Ctrl+Shift+1。这样后面回放就不用每次点菜单。

回放有两种方式:单次播放和多次运行。多次运行在「宏」→「多次运行宏」里,可以指定运行次数,也可以勾选「运行到文件末尾」。批量处理整份文件时,我通常用「运行到文件末尾」,但前提是你的宏每次循环都会把光标往下推一行,否则会原地死循环。

提示:录制宏时如果用了 Ctrl+H 替换对话框,回放时对话框会重新弹出并等待输入,这通常不是你想要的效果。批量替换建议直接用「宏」菜单里的「查找并替换」录制,或者改用 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 name="add_semicolon" Ctrl="no" Alt="no" Shift="no" Key="0"> <Action type="1" message="2170" wParam="0" lParam="0" sParam="" /> <Action type="0" message="2453" wParam="0" lParam="0" sParam=";" /> <Action type="1" message="2170" wParam="0" lParam="0" sParam="" /> </Macro>

type="0"表示发送字符,sParam就是实际输入的字符;type="1"表示发送命令消息,message是 Scintilla 的消息号。上面这段的意思是:End 到行尾、输入分号、Down 到下一行。

3.3 替换宏脚本的实操步骤

所谓「宏脚本替换即可使用」,核心就是改shortcuts.xml里的sParam和message。比如你录了一个给每行加双引号的宏,但想改成加单引号,不需要重新录,直接改 XML:

<!-- 改之前:sParam="&quot;" --> <Action type="0" message="2453" wParam="0" lParam="0" sParam="&quot;" /> <!-- 改之后:sParam="'" --> <Action type="0" message="2453" wParam="0" lParam="0" 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把整批操作合成一次撤销,避免按一次 Ctrl+Z 只回退一行。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 去空行与补逗号的组合宏

去空行用原生宏不好录,因为「删除当前行」这个动作在空行和非空行上行为不同。我一般直接用正则替换:Ctrl+H → 查找模式选「正则表达式」→ 查找\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判断
撤销一次 Ctrl+Z 全部回退有没有beginUndoAction

血泪经验是:不要等到宏攒了二十个才想起来整理。我现在的习惯是每加一个新宏,顺手在notepadpp-macros.xml里加一行注释说明用途,改完跑一遍那个 5 行测试集。这个习惯花不了两分钟,但省掉的是后面排查「这个宏到底改了啥」的半小时。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询