notepad++大小写转换需满足多个条件:必须选中文本或光标所在行含ascii字母、编码为utf-8、非列编辑模式、快捷键未被宏占用;否则ctrl+u/ctrl+shift+u/shift+f3均无效。

Notepad++ 里大小写转换不是“按一下就全好”,而是得看清楚当前有没有选中、光标在哪、文档是什么编码——错一个条件,Ctrl+U 和 Ctrl+Shift+U 就像没按一样。
为什么 Ctrl+U 按了没反应
它根本不是失效,只是没触发到可操作的内容:
- 没选中文本时,
Ctrl+U只处理光标所在整行;如果光标停在空行、// 注释行、纯数字行(如12345)或只有符号的行(如-----),那这行就没有 ASCII 字母可转,自然“没变化” - 文档编码是
GBK或ISO-8859-1,而文本含重音符(如café、naïve)→ Scintilla 底层会跳过这些字符,甚至把它们当乱码忽略 - 你正处在列编辑模式(
Alt + 鼠标拖选)→ 快捷键静默失败,切回普通选中即可 -
Ctrl+U被宏录制占用:进Settings → Shortcut Mapper → Scintilla commands,搜SCI_LOWERCASE,确认绑定仍是默认组合键
用正则替换精准控制引号内内容大小写
原生命令不识别 HTML 属性、JSON 字段或 SQL 字符串边界,必须靠 Ctrl+H + 正则语法:
- 查找填:
class="([^"]*)",替换为:class="\L\1"→ 把所有class属性值转小写 - 查找填:
id="([^"]*)",替换为:id="\U\1"→ 把所有id属性值转大写 -
\L和\U是 Notepad++ 特有语法,只对紧邻的捕获组(如\1)生效;写成\L$1或\L\1(尾部带空格)会原样输出字面字符串 - 必须勾选
Regular expression;文档编码应为UTF-8,否则带重音符的字母可能被跳过
多个文件批量转大小写只能靠宏,但节奏必须人工卡死
Notepad++ 没有“对所有打开文件执行”的按钮,宏是唯一原生路径,但它不会自动停:
- 先
File → Open多选目标文件(支持Ctrl+多选),确保第一个标签页激活 - 按
Ctrl+Shift+R开始录制 →Ctrl+A→Ctrl+U→Ctrl+Tab→ 再按Ctrl+Shift+R停止 - 假设有
N个文件,播放前数清,然后只按Ctrl+Shift+P共N−1次(最后一次不用切标签) - 宏不判断文件是否已处理,也不防空白标签页;播到第
N+1次必报错中断
Shift+F3 切换大小写只对选中有效,且只动 ASCII 字母
这不是 bug,是明确设计:
-
Shift+F3必须在有文本被选中的前提下才生效;光标放在单词上却不选中,按了也没反应 - 它只处理
a–z/A–Z范围内的字符,ü、α、你好、123、_全都不变 - 如果文档含非 ASCII 字母但又想全量处理,别指望这个快捷键;要么先转
UTF-8编码,要么改用正则分步处理 -
Shift+F3在列编辑模式下同样静默失败,切换回普通选中再试
真正容易被忽略的是:所有大小写操作都依赖 Scintilla 对字符的解析能力,而这个能力在非 UTF-8 编码下会直接绕过非 ASCII 字符——哪怕正则写对、宏录准、快捷键没被覆盖,只要状态栏右下角显示的是 ANSI 或 GBK,café 里的 é 就大概率被跳过。动手前先点 Encoding → Convert to UTF-8,比反复重试更省时间。











