sublime多光标易失效的根源在于drag_text默认开启、软换行干扰、换行符未选中、匹配逻辑严格及列选择与多光标互斥;解决需关闭drag_text、精准选中换行符、用正则限定匹配、区分列选择与多光标模式。

Sublime 的多光标不是“模式”,按错一个键(Esc、方向键、Ctrl+X)光标就全丢——真正卡住人的,从来不是快捷键记不住,而是光标加错了、留不住、或者输着输着改了不该改的地方。
Ctrl+Click 加不了光标?先关 drag_text
鼠标点一下没反应,或一按 Ctrl 就拖动文本而不是加光标,90% 是因为 drag_text 默认为 true。Sublime 优先响应拖动行为,根本没机会触发多光标。
- 打开
Preferences → Settings,在右侧用户设置里加这一行:"drag_text": false - 保存后重启(部分版本需重启才生效)
- 点击时务必松开
Ctrl(Windows/Linux)或Cmd(macOS)再点,按住不放容易拖出选区 - 软换行(
View → Word Wrap)开启时,视觉上对齐的列可能被拆到不同物理行,点偏是常态——临时关掉更准
Ctrl+Shift+L 光标歪了、只出一个?检查选区是否含换行符
Ctrl+Shift+L 不是对齐工具,它只做一件事:把当前选区按 \n 或 \r\n 切片,每片末尾加一个光标。选区不含换行符,它就当你是单行处理。
- 拖选多行时,必须覆盖到最后一行的换行符(即光标要落到行尾的
\n上),否则只生成一个光标 - 更稳妥的做法:用
Ctrl+L连续选中目标行(每按一次选一行),再按Ctrl+Shift+L - 光标落在各行末尾而非行首?按一次
Home,所有光标会同步跳到各自行首(含缩进);再按一次,跳过缩进到真正行首 - 想给每行加前缀(如
//)?别用Ctrl+Shift+L,改用列选择:Shift+Alt(Win/Linux)或Shift+Cmd(macOS)垂直拖动从第一行列首到最后一行列首
Ctrl+D 总跳过目标?匹配逻辑比你想象的严格
Ctrl+D 默认只匹配「完全相同、区分大小写、不跨行、且为完整单词」的词。它不会跳过注释或字符串里的内容——// user_id 和 const user_id = 1 都会被一起选中。
- 双击变量名后,确认高亮区域严丝合缝包裹整个标识符(不含前后空格、点号、引号)
- 想严格按字面匹配(比如
user_id不匹配user_id_list),先在查找面板勾选Aa(大小写敏感),再Ctrl+F输入词 →Alt+Enter全选预览 - 想跳过某处(比如数据库字段名不想动)?按
Ctrl+K再按Ctrl+D,当前高亮消失,光标保留在原位 - 误按太多?
Ctrl+U撤销上一次光标添加(注意:不是撤销输入内容) - 短变量名(如
data、list)极易误匹配——必须用正则:\bdata\b,Ctrl+H→ 勾选.*→Find All预览,确认无误再操作
列选择和多光标不能混用,但能互补
列选择(Shift+Alt 垂直拖动)本质是矩形块选,不是光标叠加。它不识别语法、不认单词边界,只按屏幕坐标生效——所以它能干多光标干不了的事,比如对齐 CSV 第 4 列、补全日志时间戳、批量删缩进空格。
- 列选择状态下不能用
Ctrl+D,必须先按Esc退出列选模式 - 列选择后输内容,所有行对应列位置同步生效;但一旦开始输入,就不能再扩展列选区
- 想快速在连续多行加光标?按住
Ctrl+Alt(Win/Linux)或Cmd+Option(macOS),再按↑或↓,每按一次就在上下行插入一个新光标 - Tab 键在多光标下默认插缩进,不是跳焦点——真想用 Tab 切换光标,得手动改键绑定,加一条:
{"keys": ["tab"], "command": "next_field", "context": [{"key": "num_selections", "operator": "greater_than", "operand": 1}]}
最易被忽略的点:多光标没有“撤销输入”的中间态——你一敲回车或退格,所有光标位置同步执行。操作前务必用 Ctrl+F 或 Ctrl+Shift+G 预览范围,尤其在跨文件、大文件或正则替换时。











