notepad++宏仅录制操作轨迹,需先手动验证正则、清空面板、锚定光标位置,并通过shortcut mapper绑定快捷键且启用启动加载才能持久生效。

宏里必须只录“替换操作”,不能混入查找面板交互
Notepad++ 宏不保存逻辑,只录制鼠标点击和按键轨迹。如果你在录制时点了“查找”按钮、没点“全部替换”、或中途关闭了替换窗口,回放时就会卡住或报“替换 0 处”。
正确做法是:先手动打开 Ctrl+H,勾选“正则表达式”,输入搜索和替换内容,再点击“全部替换”(不是“替换”)——这一步必须做一次,确保窗口处于可执行状态;然后开始录制 → 点击“全部替换” → 停止录制。
- 录制前务必清空所有查找/替换面板,避免宏触发旧配置
- 如果目标是“每行开头加
#”,搜索填^,替换填#,别用.*匹配整行——它可能跨行或吞掉空行 - 中文环境注意编码:UTF-8 录制的宏,在 ANSI 文件里回放,
→可能只跳半个字符,导致光标错位
正则替换进宏前,得先验证捕获组是否生效
宏不会帮你检查正则对不对。你录进去的是“点击全部替换”,不是“运行正则引擎”。如果 ^([^ ]+) [^ ]+ ([^ ]+)$ 没匹配上,宏回放就什么也不干。
验证三步走:先在替换窗口点“查找全部”,看是否高亮预期行;再点“替换”试一两次,确认 和 能正确提取;最后才录进宏。
-
^和$必须锚定整行,否则可能匹配到中间片段 - 别用
.*?当默认选择——它在未勾选“. 匹配新行”时会失效;优先用[^ \r\n]+这类明确字符集 - 捕获组编号只认
\1~\9,写成$1或\01会被当字面字符串处理
想批量处理多行?光标起始位置比宏本身还关键
宏不分析文本结构,只机械复现光标移动。你第一次把光标停在哪,后续每次循环都从那个相对位置开始。哪怕偏一个字符,整批操作就全错。
例如要给每行开头加前缀,必须先按 Ctrl+Home 把光标锁死在第一行最左端——别用鼠标点,DPI 缩放会让坐标漂移;再执行 Ctrl+Shift+L 输入 0 循环到文档末尾。
- 宏内含
↓或Ctrl+Shift+End时,单次测试必须验证:光标在第 1 行开头运行一次,是否真能选中整行?空行、混合制表符、行长不一会导致选区截断 -
Ctrl+Shift+L永远作用于“最后一次录制/保存的宏”,刚录完新操作,旧宏名就失效了 - 若需跳过空行或注释行,宏已无解——它没有
if,也没有状态记忆
宏保存后快捷键不生效?两个配置缺一不可
“保存当前录制宏”只是存进内存,重启就丢。真正落盘并可用,要动两处设置。
第一步:进 Settings → Shortcut Mapper → Macro,找到你的宏名,双击右侧空白列,绑定如 Ctrl+Alt+1 这类冷门组合;第二步:去 Settings → Preferences → Backup,勾选 Enable macro at startup——不勾,重启后宏名直接从菜单里消失。
- 宏实际存储路径是
%APPDATA%\Notepad++\shortcuts.xml,可直接编辑修复损坏项 - 快捷键冲突常见于
Ctrl+C/Ctrl+V类系统级热键,务必避开 - 如果宏里含插件命令(比如 PythonScript),必须确保插件已启用,否则回放时静默失败











