Sublime中批量让每行首字母大写需用正则替换:选中多行→Ctrl+H→勾选正则→Find为^(s*)(w)→Replace为$1\u$2→Replace All,可保留缩进且跳过非字母行。

Sublime里怎么批量让每行首字母大写?
不能直接用 Ctrl+K Ctrl+C——它只作用于当前光标所在单词,哪怕你选中了整段,也只会改第一个词。真正能“每行首字母大写”的,是正则替换配合大小写语法。
- 先选中目标多行(确保状态栏显示 “x lines”,不是 “x chars”)
- 按
Ctrl+H(Windows/Linux)或Cmd+H(macOS)打开替换面板 - 勾选
Regular Expression(.* 按钮) - 在
Find What输入^(s*)(w):匹配每行开头的可选空白 + 第一个字母 - 在
Replace With输入$1u$2:保留空白,把那个字母转为首大写 - 点
Replace All
注意:u$2 中的 u 只影响紧随其后的单个字符;$1 是捕获的缩进空格,保证格式不崩。
为什么 Ctrl+K Ctrl+C 对多行无效?
这个快捷键本质是“单词级操作”,不是“行级”。它不管选区多大,只扫描光标位置或所选文本中的每个独立单词,然后对每个单词单独执行 title case 规则——比如 hello world 会被变成 Hello World,但如果你选中的是三行:
apple banana cherry
它只会把第一行的 apple 改成 Apple,其余两行不动,因为光标没落在它们上面,且 Ctrl+K Ctrl+C 不会自动遍历所有行。
常见误操作:全选后狂按 Ctrl+K Ctrl+C,结果只有第一行生效。这不是快捷键坏了,是设计如此。
想让每行第一个非空字符大写,但行首有缩进怎么办?
上面的正则 ^(s*)(w) 已经处理了缩进问题——(s*) 捕获开头所有空白(空格、制表符),(w) 捕获之后第一个字母,$1u$2 确保缩进保留、仅该字母大写。
- 如果某行开头是中文、数字或符号(如
123abc或—item),w不会匹配,那行就跳过——这是安全行为,避免误改 - 若需强制处理非字母开头的行(比如把
1. apple的a大写),把正则改成^(s*[^a-zA-Z]*)([a-zA-Z]),替换为$1u$2 - Tab 宽度不一致时,
s*仍能正确捕获,比列选择更鲁棒
排完发现大小写混乱,比如 “iPhone” 变成 “Iphone” 怎么办?
正则 u$2 是无脑转大写,不识别专有名词。真要保留下划线命名、驼峰、或已有大写的部分(如 iPhone → IPhone 就错了),就得换策略:
- 不用全局替换,改用多光标手动双击选中每个要改的首字母,再按
Ctrl+K Ctrl+U单独转——慢但精准 - 或者用插件
Case Conversion,它支持智能 title case(跳过已大写的后续字母) - 更稳妥的是:先用
Ctrl+H查找^[a-z](行首小写字母),替换为u$0,这样只动真正该动的位置
最易被忽略的一点:正则里的 ^ 默认匹配“行首”,但前提是 Sublime 的查找范围设为“当前选区”且启用了 Regular Expression——漏勾任何一个,^ 就退化成字面量 ^ 符号。


















