ctrl+k+c无法实现多行首字母大写,因其title_case命令仅按空格切分单词,不识别换行符、标点或驼峰命名;推荐使用正则替换(^[^\n]→\u$0)或多光标+单字转换,但最可靠方案是安装case conversion插件,支持按行/段落智能转换并保留缩写。

为什么Ctrl+K+C不能让多行首字母大写
title_case命令只按空格切分单词,对换行符、标点或驼峰名完全无感。你选中三行文本,执行Ctrl+K→Ctrl+C,结果每行第一个单词的首字母变大写,但后续单词和跨行逻辑不生效——它根本没把“每行开头”当做一个处理单元。
用正则替换实现每行首字母大写
打开Ctrl+H(macOS 用Cmd+H),勾选Regular Expression(点.*按钮):
-
Find What填:^[^\n](匹配每行第一个非换行字符) -
Replace With填:\u$0(\u只影响紧邻的下一个字符,即匹配到的那个字母) - 确保光标在文件开头或全选(
Ctrl+A),再点Replace All
注意:\u$0不是\U$0——后者会开启全局大写模式,漏\E就失控;\u不需要配对,只改单个字符。
多光标+单字转换也能凑合用
适合行数不多、且每行开头确实是字母的场景:
- 按
Ctrl+Shift+L(macOSCmd+Shift+L)把光标停在每行开头 - 确保每个光标都落在首字母上(必要时
→微调) - 执行
Ctrl+K→松手→Ctrl+C(title_case)
这本质是让每个光标单独触发一次“当前单词首字母大写”,所以只对光标所在单词有效。如果某行开头是空格或标点,得先手动删掉或跳过。
真正可靠的方案:装Case Conversion插件
原生功能对“每行首字母大写”这种需求就是残缺的。Case Conversion提供右键菜单选项To Title Case,支持按行、按段落、甚至保留缩写(如iPhone→iPhone),比硬套正则稳妥得多。
安装后,选中多行 → 右键 → Case Conversion → To Title Case,一步到位。插件内部做了边界判断,不会把XMLHttpRequest变成XmLHttpRequest这类错误转换。
正则能解决简单情况,但遇到带缩写、数字前缀、混合符号的行,^[^\n]就容易误匹配;而插件的语义识别层才是处理这类问题的合理位置——别硬扛原生命令的边界限制。











