sublime text多光标编辑无开关,全靠快捷键触发;ctrl+d严格匹配整词且区分大小写和边界;ctrl+shift+l按换行切选区、光标落末尾缩进处;列选择更适对齐场景;需禁用drag_text避免误拖。

Sublime Text 没有“开启多光标编辑”的开关,它压根不靠设置启用——所有多光标操作都是快捷键触发的临时状态,按错一个键(比如 Esc、方向键、Ctrl+X)就会立刻清空全部光标。
Ctrl+D 选中同名变量时总漏掉或跳过?
这是最常被误用的操作:双击一个变量名后按 Ctrl+D,它只匹配“当前光标所在词的下一个完全相同词”,且严格区分大小写和边界(比如 user 不会匹配 username)。容易出问题的点:
-
Ctrl+D连按太快,Sublime 来不及响应,可能跳过一个匹配项 - 光标落在词中间(如
us|er),Ctrl+D会按子串匹配,结果混乱 - 想跳过某个匹配项,必须先按
Ctrl+K再按Ctrl+D;只按一次Ctrl+K不会跳,反而会取消上一步选中 - 如果变量在注释里、字符串里或不同作用域(如函数内/外),
Ctrl+D默认也会选中——这不是 bug,是它不识别语义
稳妥做法:双击选中目标变量 → 确认光标完整包裹该词(显示为高亮块)→ 缓慢、逐次按 Ctrl+D,看到最后一个匹配项被选中后再输入新名。
Ctrl+Shift+L 后光标位置歪了,改不了行首?
Ctrl+Shift+L 的本质是“把当前选区按换行符切开,每个片段末尾加一个光标”,它完全不考虑缩进对齐。例如你选中一段缩进 4 空格的代码块,按下后所有光标都落在各自行的第 4 个字符位置(也就是缩进结束处),而不是行首。
- 想统一在行首插入内容(如加
//或const),别用Ctrl+Shift+L,改用列选择:Alt+鼠标从第一行开头垂直拖到最后一行开头 - 如果已经按了
Ctrl+Shift+L且光标歪了,立刻按Home键——它会让所有光标跳到各自行首(前提是未禁用home_key_works_on_indent) - 对齐敏感场景(如 JSON 键值对、SQL 字段列表),优先用列选择而非
Ctrl+Shift+L,否则一输内容就破坏结构
手动加光标点不动、文本被拖走?
这是 Sublime 默认开启 drag_text 导致的:按住 Ctrl 点击时,它优先尝试拖动已选中文本,而不是加光标。
- 必须在
Preferences → Settings中确认存在"drag_text": false,没有就手动加上并保存 - 点的位置太靠近已有选区边缘(比如刚双击完变量还没松手),Sublime 会误判为列选择起点
- 推荐点击位置:行首空白处、行尾换行符前、两个单词之间的空格——避开词内和紧贴符号的位置
- Mac 用户注意:
Cmd替代Ctrl,但drag_text设置同样生效
真正难的不是记住快捷键,而是预判光标落点是否可控——列选择依赖等宽字体,Ctrl+Shift+L 无视缩进逻辑,Ctrl+D 不懂变量作用域。每次操作前花半秒看一眼光标位置,比事后删掉重来快得多。











