Notepad++中Ctrl+U和Ctrl+Shift+U默认不全文转换,仅作用于选中文本或光标所在整行;全文转换须通过菜单Edit→Convert Case to→Lower/Upper Case并确认提示,且仅支持ASCII字母。

Notepad++ 没有“按一次快捷键就全文转换”的默认行为——Ctrl+U 和 Ctrl+Shift+U 在未选中文本时,只作用于光标所在**整行**,不是全文。想真正转整篇文档,必须用菜单命令并确认提示。
为什么 Ctrl+U / Ctrl+Shift+U 不转全文
这两个快捷键的设计逻辑是“安全优先”:没选中时只动当前行,防止误操作污染全文。常见错觉来源:
- 光标停在空行、纯数字行或注释行(如
// TODO),该行无 ASCII 字母 → 看起来“没反应” - 文档为只读状态(如日志被其他进程占用),操作被静默忽略,不报错
- 处于列编辑模式(
Alt + 鼠标拖选),快捷键完全失效 -
Ctrl+U被宏录制占用:进Settings → Shortcut Mapper → Scintilla commands,搜SCI_LOWERCASE确认绑定
唯一能触发全文转换的入口:菜单命令
必须走顶部菜单,不能依赖右键(右键默认不显示该选项):
- 点
Edit → Convert Case to → Lower Case(或Upper Case) - 若未选中文本,会弹出确认框:“未选择文本,是否对整篇文档执行?” → 点 Yes
- 该操作调用的是和快捷键相同的底层接口(
SCI_LOWERCASE/SCI_UPPERCASE),但加了交互兜底
正则替换实现上下文感知的全文转换
当需要只转特定结构内的内容(如所有 class="Btn Primary" 中的值),原生命令做不到,必须用 Ctrl+H:
- 勾选
Regular expression,查找填class="([^"]*)",替换为class="\L\1"(转小写)或class="\U\1"(转大写) -
\L和\U是 Notepad++ 特有语法,仅对紧邻的捕获组(如\1)生效;\L$1或\L\1(尾部空格)会字面输出,无效 - 文档编码必须为
UTF-8(菜单栏右下角确认),GBK 下带重音符的字母(如café)可能被跳过
跨文件批量全文转换只能靠宏 + 手动节奏控制
Notepad++ 无内置“对所有打开文件执行”功能,宏是唯一原生路径,但极易播过头:
- 先
File → Open多选目标文件(支持Ctrl+多选),确保第一个标签页激活 - 按
Ctrl+Shift+R录制 →Ctrl+A→Ctrl+U→Ctrl+Tab→Ctrl+Shift+R停止 - 播放前数清文件总数 N,只按
Ctrl+Shift+P共N−1次(最后一次不用切标签) - 宏不判断文件边界,播到空白标签页会报错中断;录制时切勿切换窗口焦点
真正容易被忽略的是:所有大小写转换都只处理 ASCII 字母(A–Z / a–z),中文、数字、符号、BOM、重音符、emoji 全都不动——这不是 bug,是 Scintilla 底层限制。动手前务必先点 Encoding → Convert to UTF-8,再操作。











