Notepad++ 无原生跨文件批量大小写功能;Ctrl+U/Ctrl+Shift+U 仅作用于选中文本或光标所在整行;跨文件需手动控制标签页或谨慎录制宏;正则替换用\L/\U可实现上下文感知转换,但须UTF-8编码。

Notepad++ 没有“一键全选所有文件+全文大写”的原生批量大小写功能。所谓“批量”,实际是三种不同粒度的操作:单行、选区、全文档——但都只作用于当前标签页;跨文件必须靠人工节奏控制,否则宏会播到空白标签页报错中断。
Ctrl+U 和 Ctrl+Shift+U 到底作用于什么范围
这两个快捷键的行为完全取决于“有没有选中文本”和“光标在哪一行”:
- 有选中 → 只转换选中的文本(支持多行选中)
- 没选中 → 只转换光标所在**整行**,不是全文档,也不是当前段落
- 光标停在空行、纯数字行、
// 注释行或全为空格的行 → 看起来像“没反应”,其实是真没字母可转 - 快捷键绑定可能被覆盖:进
Settings → Shortcut Mapper → Scintilla commands,搜SCI_LOWERCASE和SCI_UPPERCASE确认是否仍为默认值
用正则替换实现上下文感知的大小写转换
原生快捷键无法识别 HTML 属性、引号内容或函数名边界,必须用 Ctrl+H 配合 Notepad++ 特有的 \L / \U 语法:
- 查找:
class="([^"]*)",替换:class="\L\1"→ 把所有class属性值转小写 - 查找:
id="([^"]*)",替换:id="\U\1"→ 把所有id属性值转大写 -
\L和\U只对紧邻的捕获组生效(如\1),\L$1或\U\0会字面输出,不触发转换 - 必须勾选
Regular expression,且文档编码应为UTF-8;GBK 下带重音符的字母(如café)可能被跳过或乱码
录制宏批量处理多个文件,为什么总卡在最后一个
宏不判断文件边界,只机械执行你录的动作(比如 Ctrl+A → Ctrl+U → Ctrl+Tab)。播到第 N 个文件后,再按 Ctrl+Tab 会切到空白标签页,Notepad++ 报错中断:
- 先
File → Open多选所有目标文件(支持Ctrl+多选),数清共 X 个标签页 - 从第一个标签页开始录制:
Ctrl+A → Ctrl+U → Ctrl+Tab,然后停止录制 - 播放时只按
Ctrl+Shift+P共X−1次(最后一个文件不用切) - 录制过程中切勿切换窗口焦点,否则宏会混入
Alt+Tab或鼠标动作
真正容易被忽略的是编码和字符集限制:哪怕正则写对、快捷键按对,如果状态栏右下角显示的是 ANSI 或 GBK,含重音符或非 ASCII 字母的文本大概率被跳过——这不是 bug,是 Scintilla 底层解析限制。动手前先点 Encoding → Convert to UTF-8,转完再根据下游工具要求决定是否去掉 BOM。


















