Notepad++宏录制前必须确认三件事:所有目标文件已一次性打开且首标签页激活;状态栏编码为UTF-8/ANSI/UTF-8-BOM,否则先转码;关闭列编辑模式。

宏录制前必须确认的三件事
Notepad++ 的宏不判断上下文,只机械回放按键流。录错一步,整批文件就全乱。动手前先检查:
- 确保所有目标文件已用
File → Open一次性打开(支持Ctrl+多选),且第一个标签页处于激活状态 - 状态栏右下角显示编码必须是
UTF-8、ANSI或UTF-8-BOM;若显示GBK或ISO-8859-1,先点Encoding → Convert to UTF-8 - 关闭列编辑模式(即不能是
Alt + 鼠标拖选状态),否则Ctrl+U在录制中会静默失败
录制宏时的精确操作序列
宏的核心是“处理当前文件 → 切到下一个”,不能多也不能少。正确步骤是:
- 激活第一个标签页,按
Ctrl+Shift+R开始录制 - 按
Ctrl+A全选 →Ctrl+U(或Ctrl+Shift+U)执行转换 →Ctrl+Tab切到下一标签页 - 再按
Ctrl+Shift+R停止录制
注意:Ctrl+Tab 是关键动作,它让宏知道“这个文件处理完了,该下一个”。漏掉或换成 Ctrl+Shift+Tab 会导致播放时顺序错乱。
播放宏时最容易踩的坑
宏不会自动停在最后一个文件。它会忠实地执行“转 + 切”,切到第 N+1 个标签页时,那里是空的,Notepad++ 报错中断。安全做法是:
- 数清共打开了几个文件(比如 5 个),记为
N - 播放前确保第一个标签页激活
- 只按
Ctrl+Shift+P共N−1次(即:5 个文件按 4 次) - 第
N个文件由你手动处理,或在录制时把最后一步Ctrl+Tab删掉(用Macro → Modify Shortcut/Delete Macro编辑)
如果中途切换了窗口焦点(比如 Alt+Tab 切到浏览器),宏会录进错误动作,播放时可能触发保存对话框或关闭标签页。
为什么正则替换比宏更适合局部转换
宏适合“全文统一转”,但如果你只想改 class="Btn Primary" 里的值,或只转变量名、不碰注释和字符串,宏就太粗暴了。这时应放弃宏,改用正则:
- 打开
Ctrl+H,勾选Regular expression - 查找填
class="([^"]*)",替换填class="\L\1"(\L必须紧挨\1,中间不能有空格) - 点
全部替换前,先点在下方查找确认匹配无误
\L 和 \U 是 Notepad++ 特有语法,仅对捕获组生效;写成 \L$1 或 \L\1 (尾部带空格)会原样输出,不是报错,而是字面替换——这点极难排查。
真正容易被忽略的是:所有大小写转换,无论宏、快捷键还是正则,都只处理 ASCII 字母(a–z / A–Z)。带重音符的 café、德语 ü、中文、数字、符号,一律跳过。这不是 bug,是 Scintilla 底层限制,改不了。


















