Ctrl+Shift+L 拆光标仅依据选区是否含换行符,安全做法是先用 Ctrl+L 逐行选中再统一拆;多光标编辑需注意光标对齐、插件冲突、光标上限及误操作导致的崩溃。

Ctrl+Shift+L 拆光标前必须确保选区含换行符
这个快捷键不会“猜你想改几行”,它只认你选中的文本里有没有 \n。如果鼠标拖选时最后一行没带换行符(哪怕只差一个像素),它就当你是单行操作,只在第一个位置放一个光标。
安全做法是用 Ctrl+L(Windows/Linux)或 Cmd+L(macOS)逐行选中目标行:点一下第一行按 Ctrl+L,再点第二行再按,直到所有目标行都被高亮,最后统一按 Ctrl+Shift+L。这样每行都明确被纳入选区,100% 拆出对应数量的光标。
- 空行也会被拆出光标,光标默认落在行首;若想加内容到行尾,得补按
End或Cmd+→ - 如果某行末尾有空格或制表符,
End会停在空白处而非真正行尾,建议先运行Ctrl+Shift+P→ 输入Trim Trailing White Space - 装了 Emmet 或其他插件时,可能劫持
Ctrl+Shift+L,可在Preferences > Key Bindings中搜索split_selection_into_lines确认绑定是否正常
想在每行开头/结尾批量加内容?别直接输,先对齐光标
多光标下输入是同步的,但光标初始位置决定内容插在哪。直接按 Ctrl+Shift+L 后输内容,大概率覆盖缩进或错位——因为光标还停在原选区末尾,不是行首或行尾。
正确节奏是:
- 先用
Ctrl+L多次选中目标行,再按Ctrl+Shift+L拆光标 - 统一按
Home(Windows/Linux)或Cmd+←(macOS)让所有光标跳到各自行首 → 此时输//或const就能对齐加前缀 - 统一按
End(Windows/Linux)或Cmd+→(macOS)让所有光标跳到各自行尾 → 此时输;或,"就是干净追加
注意:End 在某些文件里会停在行尾空白处,不是逻辑行尾。如需严格落到 \n 前,可安装 Hard End of Line 插件后调用 Move to Hard EOL 命令。
连续多行编辑卡顿或光标丢失?检查 drag_text 和上限
Sublime 默认最多保留约 2000 个光标,超限后静默丢弃,看起来像“突然只剩一个光标”。另外,如果 drag_text 没设为 false,Ctrl+Click 会触发文本拖动而非加光标,干扰连续操作节奏。
- 确认用户设置里已写入
"drag_text": false,否则鼠标点击极易误拖文本 - 编辑完立刻按
Esc退出多光标状态,避免后续按Enter或Backspace时劈开所有行 - 列选择(
Alt+Shift+↑/↓)依赖等宽字体,若用系统默认 UI 字体,竖向拖拽时会出现视觉错位,换成Consolas或Fira Code即可稳定
Ctrl+D 连续选中变量名总漏掉目标?别双击,用 Alt+F3 全量匹配
Ctrl+D 是贪心逐个匹配,受 match_whole_word 和大小写严格限制。比如双击选中 user_id 后连按,user_id_list 和 USER_ID 都会被跳过。
对连续多行里的同名变量批量重命名,更稳的方式是:
- 把光标放在要改的变量上(不选中),直接按
Alt+F3(Windows/Linux)或Ctrl+Cmd+G(macOS) - 它会一次性高亮并生成所有匹配光标,上限约 10000 处,超量才静默丢弃
- 若担心误命中字符串字面量(如
"user_id"),先按Alt+R开启正则,输入\buser_id\b再执行匹配
真正容易被忽略的是:多光标不是模式,没有“开启”这回事;它靠叠加维持,也靠一次按键就崩塌。最常丢光标的动作不是按错键,而是无意中碰了方向键、Esc 或鼠标滚轮。编辑节奏一旦建立,就别中途切窗口或查文档。

















