ctrl+shift+l后光标默认在每行换行符前(物理行尾),而非逻辑行首,这是sublime的设计行为;需按←键才能精准退至各行绝对开头。

Ctrl+Shift+L 后光标默认在行尾,不是行首;想批量加前缀,必须先按 ← 或 Home,否则输的内容全堆在行尾。
Ctrl+Shift+L 之后光标为什么不在行首?
Sublime 的 Ctrl+Shift+L(Windows/Linux)或 Cmd+Shift+L(macOS)不会自动把光标对齐到逻辑行首,它只是把光标放在每行换行符前——也就是物理行尾。这是设计行为,不是 bug。
- 如果你用鼠标拖选多行但没覆盖末尾的
\n,Ctrl+Shift+L可能只生成一个光标(因为选区里没换行符) - 全选后按
Ctrl+Shift+L,光标仍在每行末尾,此时直接输入会追加内容,而非插入行首 - 有缩进时,按一次
Home停在缩进起点(比如 4 个空格后),不是绝对行首;要到最左,得再按一次Home,或改用←逐字符退
用 ← 和 → 键比 Home/End 更稳
← 和 → 是 Sublime 多光标下最可靠的行首/行尾定位方式,尤其在缩进不一致、含 BOM 或混用 Tab/空格时。
- 执行
Ctrl+Shift+L后,立刻按←:所有光标精准退到各自行的绝对开头(包括空行) - 想加行尾内容?按
→或End,光标停在换行符前,输入即追加 - 若某行是空行,
←会停在行首(即换行符前),输入后变成“新内容\n”,符合预期 - Vintage 模式下
Ctrl+Shift+L被重映射,此时←/→仍可用,Home/End 可能失效
正则替换更适合千行级或带条件的场景
当你要加前缀但跳过某些行(比如已有注释的、空行、或匹配特定模式的),Ctrl+H 正则比多光标更安全高效。
- 必须先点右下角
.*按钮启用正则,否则^和$当普通字符处理 - 加行首:
Find What填^,Replace With填//;加行尾:Find What填\s*$(匹配行尾空白+换行位置),Replace With填; - 只给非空行加前缀?搜
^(?=\S);跳过以//开头的行?搜^(?!// ) - 状态栏显示“替换 0 处”?检查是否勾了“在所选内容中”,而你根本没做任何选中
列选择(Alt+拖拽)只适合视觉对齐的文本
列选择本质是矩形框选,它不管语法或逻辑结构,只按屏幕坐标落点。
- 适合 CSV 字段、日志时间戳块、或已统一转为空格缩进的配置项
- 一旦某行缩进是 Tab、另一行是 4 个空格,列选择就会错位——光标加在“同一列像素”,而非“同一行首”
- 操作前建议先用
Ctrl+Shift+P→ 输入Indentation: Convert to Spaces统一缩进 - UTF-8-BOM 编码可能干扰
Home定位,可尝试File → Save with Encoding → UTF-8去除 BOM
真正容易被忽略的是:多光标定位依赖「光标初始位置」,而不是「你心里认为的行首」。哪怕只有一行缩进不一致,Home 就可能失准;而 ← 总是退一个字符,反而最可控。别迷信快捷键名字,盯住光标实际落在哪。











