Notepad++无原生大小写互转功能,Ctrl+U/Ctrl+Shift+U和Shift+F3均为单向转换,无法逐字母翻转;真正互转需正则分两步:[a-z]→U$0、[A-Z]→L$0,且必须勾选正则模式。

Notepad++ 没有真正意义上的“一键切换大小写”功能(即 a↔A 逐字母翻转),Ctrl+U 和 Ctrl+Shift+U 是单向转换,不是 toggle;所谓“切换”只是两次单向操作的错觉,原始大小写结构无法还原。
为什么 Shift+F3 或 Ctrl+U 看起来像能“切换”但实际不行
常见误解来自这两个动作:
-
Shift+F3确实叫“切换大小写”,但它只在有选中文本时生效,且仅对 ASCII 字母(a–z / A–Z)做全选区统一转换:选中HeLLo→ 按一次变HELLO→ 再按一次变hello,中间没有保留首字母大写或 camelCase 结构 -
Ctrl+U按两次不会回到原状:第一次把XMLHttpRequest变成xmlhttprequest,第二次Ctrl+Shift+U只能变成XMLHTTPREQUEST,原始的大小写边界彻底丢失 - 所有操作都不处理非 ASCII 字符(如
café中的é、ü、中文、Emoji),它们被原样跳过
想实现真正的字母级大小写翻转,只能用正则分两步
Notepad++ 的替换引擎支持 U<p>Notepad++ 的替换引擎支持 <code>U$0(转大写)和 L$0(转小写),但不支持单字符 toggle 语法(如 \u 或 \l)。必须拆开执行:
L<p>Notepad++ 的替换引擎支持 <code>U$0(转大写)和 L$0(转小写),但不支持单字符 toggle 语法(如 \u 或 \l)。必须拆开执行:(转小写),但不支持单字符 toggle 语法(如 \u 或 \l)。必须拆开执行:- 第一步:查找
[a-z],替换为U$0→ 所有小写字母变大写 - 第二步:查找
[A-Z],替换为L$0→ 所有大写字母变小写 - 两个步骤必须分开,且都勾选
Regular expression - 不能合并成
[a-zA-Z]一起替换,否则U$0会把全部匹配项都转大写,起不到翻转效果
快捷键没反应?先确认这三个硬性条件
不是快捷键坏了,而是 Notepad++ 的大小写转换有明确触发门槛:
- 文档编码必须是
UTF-8、UTF-8-BOM或ANSI;GBK / ISO-8859-1 下含重音符的字母可能被跳过,状态栏右下角显示非这三者时,先点Encoding → Convert to UTF-8 - 不能处于列编辑模式(即按住
Alt鼠标拖选的状态),否则Ctrl+U静默失败,切回普通鼠标拖选即可 -
SCI_LOWERCASE和SCI_UPPERCASE命令必须绑定在默认快捷键上:进Settings → Shortcut Mapper → Scintilla commands,搜索确认未被宏或其他插件覆盖
最常被忽略的是:所有转换逻辑都只跑在 ASCII 字母上,无论你多想让它处理 café 或 über,它都只动 f 和 u,剩下部分原封不动——这不是 bug,是 Scintilla 底层限制,改不了。


















