Notepad++ 没有一键转标题格式的可靠快捷键;其菜单中的 Title Case 功能受限于 Scintilla 接口封装薄弱,存在作用范围不明确、不支持 Unicode 单词边界、对连字符和撇号处理异常等问题,推荐用两步正则替换或导出至 Python/JS 环境处理。

Notepad++ 有没有一键转标题格式(Title Case)的快捷键
没有。Notepad++ 原生不提供 Ctrl+Shift+T 或类似快捷键来实现“每个单词首字母大写、其余小写”这种标题格式转换。它的 Edit → Convert Case to 菜单里虽有 Title Case 选项,但该功能仅在部分语言模式(如 HTML、XML)下可用,且行为不稳定——常把所有单词全转大写,或跳过带连字符、撇号的词(如 user-id、don't),实际不可靠。
为什么菜单里的 Title Case 经常失效或结果异常
这个菜单项调用的是 Scintilla 的 SCI_TITLECASE 接口,但 Notepad++ 对其封装较弱,具体表现包括:
- 未选中文本时,它可能只作用于光标所在行,且不弹确认提示
- 选中区域含换行符时,会把每行首字母都大写,而非按单词粒度处理
- 对非 ASCII 字母(如
café、naïve)基本不识别,直接跳过 - 状态栏显示
Normal text时,该菜单项甚至可能灰显不可点
用正则替换模拟 Title Case 的实操步骤
必须分两步,且严格依赖正则表达式模式(勾选 Ctrl+H 中的「正则表达式」):
- 第一步:把所有单词开头字母转大写 — 查找
\b([a-z]),替换为\U\1 - 第二步:把其余字母强制转小写 — 查找
(?i)(?,替换为 <code>\L$0(注意:此步需确保第一步已执行完毕,否则大小写混杂会出错) - 更稳妥的做法是先用
[A-Z]全部转小写,再用\b[a-z]单独提首字母 — 这样能避免残留大写
示例:原文 hello world user-id DON'T PANIC → 先全小写得 hello world user-id don't panic → 再匹配 \b[a-z] 替换为 \U$0 → 得到 Hello World User-Id Don'T Panic(注意撇号后仍为大写,这是 Notepad++ 正则的固有限制)
真正需要稳定 Title Case 时该怎么做
Notepad++ 不是为此设计的工具。容易被忽略的关键点是:
-
\U和\L只影响紧邻的捕获组或匹配项,无法嵌套或条件应用 - 它不支持 Unicode 单词边界(
\b仅识别 ASCII 字母数字和下划线),所以中文混排或带 emoji 的文本完全无法处理 - 跨文件批量做 Title Case?只能靠宏录制 + 手动节奏控制,且每步都要验证结果,容错率极低
如果高频使用,建议导出文本到支持 Python/JS 的环境,用 string.capwords() 或正则 /\b\w/g 配合回调函数处理,再粘贴回来。


















