Notepad++多行大小写转换需显式选中,未选中时仅处理光标所在整行;列编辑模式下Ctrl+U静默失败;正则替换支持\L\1/\U\1结构化转换;宏可批量处理多文件但需统一UTF-8编码。

Ctrl+U 和 Ctrl+Shift+U 可以直接转换多行文本大小写,但前提是这些行必须被**显式选中**——不是靠光标停在某处自动识别,也不是靠“全文”隐含覆盖。
多行选中后按 Ctrl+U 或 Ctrl+Shift+U 才生效
Notepad++ 不会自动把“看起来连在一起的几行”当作一个逻辑块处理。你必须用以下任一方式明确框出目标范围:
• 鼠标拖选跨多行区域(含换行符)
• Ctrl+A 全选整个文档(此时快捷键作用于全部内容)
• 按住 Shift + 方向键逐行扩展选区
• 在列编辑模式下(Alt + 鼠标拖选)也能选中多行对应列,但注意:Ctrl+U 在列编辑模式下会静默失败,必须先切回普通选中模式
没选中时“多行”只是幻觉:它只动光标所在那一行
很多人误以为光标停在第5行、按 Ctrl+U 就会从第5行开始往下批量处理,实际不会。未选中状态下,Notepad++ 严格只处理光标所在**整行文本**,哪怕你看到上下文是整齐的列表或配置项,它也不会延伸。
常见错觉场景:
• 光标停在空行 → 看起来没反应
• 光标停在只有数字或符号的行(如 123、// comment)→ 实际无字母可转
• 文档编码为 GBK 或含 BOM 的非标准 UTF-8 → 带重音符的字母(如 café)可能被跳过,导致部分单词没变
正则替换实现带结构的多行批量转换
当多行文本有共同上下文(比如每行都以 class="xxx" 开头),原生快捷键无法识别这种模式,必须用 Ctrl+H 配合正则:
• 勾选 Regular expression
• 查找填:class="([^"]*)"
• 替换填:class="\L"(全部转小写)或 class="\U"(全部转大写)
• 注意:\L 和 \U 是 Notepad++ 特有语法,只对紧邻的捕获组(如 )生效;写成 \L 或 \L (尾部带空格)会字面输出,不触发转换
• 编码必须为 UTF-8,否则非 ASCII 字母可能乱码或被忽略
宏录制能模拟多文件多行操作,但节奏要自己卡
如果你有多个文件,每份都含类似结构的多行文本(如日志头、YAML 键值对),可用宏串联动作:
• 先 File → Open 多选所有目标文件(支持 Ctrl+多选)
• 激活第一个标签页,按 Ctrl+Shift+R 开始录制 → Ctrl+A → Ctrl+U → Ctrl+Tab → Ctrl+Shift+R 停止
• 播放前数清共 N 个文件,只按 Ctrl+Shift+P 共 N−1 次(最后一次不用切标签)
关键限制:
• 宏不判断文件是否已处理,播到空白标签页必报错
• 录制时若切换窗口焦点(比如 Alt+Tab 切到浏览器),宏会混入无效动作,后续全崩
• 所有文件建议先统一用 Encoding → Convert to UTF-8,避免中途因编码不一致中断
真正容易被忽略的是:大小写转换永远只作用于 ASCII 字母(a–z/A–Z),中文、emoji、带重音的拉丁字符、希腊字母、数字和符号全都不动——这不是 bug,是 Scintilla 底层引擎的硬性边界。别指望它帮你处理 USER_NAME → userName 这类命名转换,那得靠正则配合 \U/\L 和分组捕获。










