结论:用ctrl+shift+l(win/linux)或cmd+shift+l(macos)将选中多行转为独立光标,再按home/←移至行首输入;此为sublime原生正确路径,非技巧。

直接说结论:用 Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS)拆出多光标,再按 Home 或 ← 跳到行首,输入即可。这不是“技巧”,是 Sublime 原生设计的正确路径。
为什么不能先 Ctrl+A 再按 Home?
因为 Ctrl+A 全选后,Home 只会跳到第一行开头,其余光标仍停留在原位置——你看到的是“整块选中”,不是“每行一个光标”。此时敲字符,只会覆盖第一行开头,其他行完全没反应。这是最常翻车的操作,尤其新手容易以为“选中了就等于能批量输”。
- 真正要触发批量输入,必须让 Sublime 显示多个独立光标点(每个行首一个小竖线)
- 只有
Ctrl+Shift+L能把“选中的多行”转换成“每行一个光标” - 如果某行有缩进,
Home默认停在缩进起点;要到真正行首,得按两次Home或用Ctrl+Home(Win)/Cmd+Home(Mac)
^ 正则替换加行首字符,哪些坑必须避开?
正则快,但默认行为和直觉不一致:^ 在 Sublime 里默认就是逐行匹配(无需手动开 m 标志),但前提是必须启用正则模式(点一下右下角 .* 按钮)。很多人输完 ^ 就点全部替换,结果发现什么都没变——其实是 .* 没点亮,^ 被当成了普通字符字面量。
- 别写
^.或^.*:这会匹配并删除整行内容,只留下你填的前缀 - 空行也会被
^匹配,所以加//后空行变成//,不是 bug 是预期行为 - 混合换行符(
\r\n和\n共存)会导致部分行漏掉,建议先用Ctrl+Shift+P→ 输入Set Line Endings: Unix统一为 LF - 文件带 BOM(如 UTF-8-BOM)时,
^可能匹配不到首行开头,删掉 BOM 最稳(File → Save with Encoding → UTF-8)
加 #、//、- 这类符号,语法高亮会影响吗?
不影响输入,但可能干扰视觉判断。比如 Markdown 文件里加 #,Sublime 会立刻把它当标题高亮,导致你误以为光标没对齐;Python 文件里加 # 后,整行变灰色,缩进看起来“塌”了一截——其实只是颜色变化,字符位置完全正确。
- 这类干扰纯属渲染层问题,不影响实际文本内容和后续操作
- 如果实在看不清,临时关掉语法高亮:
View → Syntax → Plain Text - 加
-做列表时,注意当前行是否已有空格缩进;-加在缩进内还是行首,语义完全不同(后者才是标准 Markdown 列表)
真正复杂的地方在于:没有万能方案。几十行以内,Ctrl+Shift+L + Home 最快最可控;上千行且需条件过滤(比如“只给非空行加”),就得靠正则,但得自己验算 ^(?=\S) 在当前版本是否支持负向先行断言——Sublime 的 Boost 正则引擎对这类语法支持不稳定,有时报错有时静默失败。动手前,先拿三行测试。











