最稳方式是用原生多光标:ctrl+shift+l(win/linux)或cmd+shift+l(macos)拆分选中行,再按home确保光标在行首,直接输入字符;正则替换更适用于有条件添加场景。

用 Ctrl+Shift+L 拆分多行光标再输入
Sublime Text 里批量在每行开头加字符,本质是「让光标同时出现在每一行开头」。最稳的方式不是找插件,而是用原生多光标功能:Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS)。它会把当前选中的每行拆成独立光标,光标自动停在行首位置。
常见错误现象:直接按 Ctrl+A 全选后输字符——结果只在第一行开头加,其余行没反应;或者用列选择(Ctrl+鼠标拖拽)但没对齐行首,导致字符加偏了。
- 先选中目标多行(鼠标拖选或
Ctrl+L连续选行) - 按
Ctrl+Shift+L,确认每行开头出现一个光标点 - 按
Home键确保所有光标真正在行首(有时光标会卡在缩进内) - 直接输入要加的字符,比如
#或*
用正则替换更可控,尤其带条件时
如果要加的字符依赖上下文(比如只给非空行加、跳过注释行),正则替换比多光标更可靠。打开替换面板(Ctrl+H),勾选 .*(正则模式),搜索框填 ^,替换框填你要加的字符。
注意 ^ 在 Sublime 中默认匹配每行开头(开启 g 标志后),不用写 ^.* 或加 m 标志。性能上几乎无感,哪怕几千行也秒出结果。
- 只给非空行加:搜索
^(?=\S),替换// - 跳过已有前缀的行:搜索
^(?!// ),替换// - 加完后发现多了空格?检查是否误按了空格键——多光标下按一次空格,所有行都加一个空格
别用“列编辑”代替行首定位
很多人习惯按住 Shift+Alt(Windows)或 Shift+Cmd(macOS)竖向拖鼠标来列选择,但这不等于「行首」。一旦某行缩进不一致(比如有 Tab 有空格、或代码块嵌套),光标就会错位,导致有的行加在缩进里,有的加在真正行首。
真实使用场景:处理日志文本、整理 Markdown 列表、补全配置文件注释——这些都需要严格对齐行首,而不是视觉列对齐。
- 列选择适合加相同后缀(如统一加
;),不适合行首操作 - 如果必须用列选,先
Ctrl+Shift+P→ 输入Indentation: Convert to Spaces统一缩进,再操作 - Sublime 默认列选择行为受
ignored_packages影响,禁用插件后可能异常,优先走Ctrl+Shift+L路径
插件不是必须,但 Vintage 模式下快捷键会冲突
如果你开了 Vim 模式(Vintage),Ctrl+Shift+L 默认被映射为其他命令,此时多光标失效。这不是 bug,是模式切换导致的快捷键覆盖。
兼容性影响:开 Vintage 后,Ctrl+Shift+L 变成「从光标到行尾选中」,和原意完全相反。这时候要么关掉 Vintage(Preferences → Settings – User 里删掉 "ignored_packages": [] 中的 Vintage),要么改快捷键绑定。
- 查当前快捷键:菜单
Preferences → Key Bindings – User,加一条:[{"keys": ["ctrl+shift+l"], "command": "split_selection_into_lines"}] - 改键位不如直接记新组合:
Ctrl+Shift+P→ 输入Split Selection into Lines回车 - 别装
AlignTab或Text Pastry来干这事——增加启动时间,还容易和原生功能打架
实际操作中最容易被忽略的是:选中后没确认光标是否真落在行首。哪怕只有一行缩进用了 Tab 其余用空格,Ctrl+Shift+L 后按 Home 的效果也不同——得手动按一次再看一眼。










