Sublime Text 多光标靠快捷键实时叠加而非开关:Ctrl+D 逐次扩展选中、Ctrl+Click 点击添加、Ctrl+Shift+L 按换行切片;其行为受选区是否含\n、插件劫持、光标位置及操作脆弱性影响。

Sublime Text 没有“设置多光标同时输入”的开关或配置项——它不靠开启模式,而是靠快捷键实时叠加光标位置。你按一次 Ctrl+D、点一下 Ctrl+Click、或执行一次 Ctrl+Shift+L,就生成一批光标;光标在哪,输入就落在哪。
Ctrl+Shift+L 为什么只出一个光标?
它不是“批量选中工具”,而是“按换行符切片器”:只看你当前选区里是否包含换行符(\n)。如果鼠标拖选时最后一行没覆盖到换行符(视觉上像选中了,实际漏掉了),Sublime 就当它是单行选区,Ctrl+Shift+L 只放一个光标。
- 安全做法是用
Ctrl+L(Windows/Linux)逐行选中:把光标放到第一行 → 按一次Ctrl+L→ 光标跳到下一行 → 再按 → 重复直到所有目标行都被高亮 - 此时再按
Ctrl+Shift+L,每行末尾必出一个光标 - 空行也会被拆出光标,但默认落在行首;如需插在行尾,得额外按
End - 装了 Emmet 或其他插件时,
Ctrl+Shift+L可能被劫持;可在Preferences > Key Bindings中搜索split_selection_into_lines确认绑定是否正常
想在每行开头统一加前缀,比如 console.log(
别直接按 Home——它默认跳到第一个非空字符,缩进存在时,光标会卡在缩进后,导致前缀插在中间。
- 更稳的方式是:
Ctrl+L逐行选中 →Ctrl+Shift+L拆光标 →Ctrl+Shift+P输入Move to Beginning of Line,所有光标立刻落到每行最开头 - 如果代码用了制表符缩进,
Move to Beginning of Line比Home更可靠 - 若想对齐插入(比如都从第 4 列开始),该用列选择:
Alt+Shift+鼠标拖拽(Windows/Linux)画竖直矩形区域
Ctrl+D 选不全变量名,总跳过目标项
Ctrl+D 默认开启 match_whole_word: true,且严格匹配大小写、下划线和单词边界。它不是“搜词”,而是“从当前选中内容出发,找下一个字面完全一致的片段”。
- 双击选中
user_id后连按Ctrl+D,会跳过user_id_list和USER_ID——前者多了_list,后者大小写不符 - 想改
userName却漏了user_name?先确保双击选中的是你要的完整形式,再按Ctrl+D - 注释里有同名字符串干扰?按
Ctrl+K再按Ctrl+D,跳过当前高亮项,光标保留在原位 - 一次性全选所有匹配项:用
Alt+F3(Windows/Linux),但注意上限约 10000 处,超量静默丢弃
真正容易被忽略的点是:多光标状态极其脆弱——按一次 Esc、一个方向键、甚至 Ctrl+X,都会清空除主光标外的所有光标。操作前最好确认是否已进入稳定选区,别在列选择、正则查找面板弹出等状态下强行叠加。











