esc是唯一能一步到位取消列选择并恢复单光标的操作;它不依赖焦点、不触发撤销栈、不影响已输入内容,且能清除所有辅助光标,仅保留主光标。

按 Esc 是最直接、最可靠的取消方式
列选择(灰色矩形选区)本质上是一次性选中动作,不是“开启模式”,所以不存在“关闭列模式”这回事——它只在你松开鼠标那一刻才真正生效。一旦生效,你面对的就是一个带多个光标或一块矩形选区的状态。此时想立刻回到干净的单光标,Esc 是唯一能一步到位的操作。
它不依赖焦点是否在编辑区,不触发撤销栈,也不影响已输入内容;哪怕刚粘贴完、刚切回窗口、甚至鼠标点偏了触发了折叠,Esc 都能立刻清空所有辅助光标,只留下最后操作的那个主光标。
- 别指望鼠标单击替代:点偏可能选中行号、展开折叠、甚至拖动文本(尤其
"drag_text": true时) - 方向键(←/→/↑/↓)会强制合并光标,但逻辑不透明,容易只剩一个卡在奇怪位置
- 输入任意字符也会立即合并为单光标,且无法回退到列选前状态
为什么 Ctrl+Z 不管用
Ctrl+Z 只撤销「编辑动作」:比如你刚在列选后按了 Backspace 或 Ctrl+V,它能撤掉那一次删/粘行为,但不会还原列选本身——光标依然散在各处,或者还卡着灰色矩形选区。
更麻烦的是,只要中间做过非编辑操作(比如切 Tab、按 Ctrl+F、甚至滚了一下鼠标),Ctrl+Z 的撤销栈就会被截断,连那一次编辑都撤不回来。
- 列选择本身不进撤销栈,它是“视图层”的临时状态
- 如果列选后没做任何编辑,
Ctrl+Z压根不会响应 - 误粘贴导致错位?先按
Esc清光标,再用Ctrl+Z撤内容,顺序不能反
列选择残留灰色矩形?检查 drag_text 设置
如果你松开鼠标后,灰色矩形没消失、光标也没出现,而是变成一个无法输入的“死选区”,大概率是 "drag_text": true 在作怪。这个设置默认开启,会让 Alt+鼠标拖动变成移动文本块,而不是生成列选区。
解决方法很简单:打开 Preferences → Settings,在右侧用户设置里加上:
"drag_text": false
保存后立即生效,不用重启。改完再试 Alt+垂直拖拽,灰色矩形会正常出现并可操作;松开后也能正常响应 Esc。
- 该设置也影响
Ctrl+点击行为:开着时容易误拖文本,关掉后点击才真正加光标 - 如果已拖出异常矩形,
Esc通常仍能清掉,但根源不除,下次还会复现
列选后粘贴只作用于第一行?这不是取消问题,是操作顺序错了
常见现象:Alt+拖出 5 行列选,Ctrl+V 后只有第一行被替换。这不是列选没取消,而是 Sublime 默认把粘贴当作「覆盖当前光标位置」,而非「对每个光标分别粘贴」。
正确做法不是取消列选,而是调整操作流:
- 先按
Delete或Backspace清空整个列选区域(所有行同步删除) - 再
Ctrl+V,新内容会插入到每一行对应位置 - 或改用命令面板:
Ctrl+Shift+P→ 输入Insert Text at Carets,它专为多光标粘贴设计
真正容易被忽略的点是:列选择和多光标编辑虽常混用,但底层机制不同——列选是矩形块,多光标是独立插入点。想稳定批量编辑,最好在列选后立刻执行 Ctrl+Shift+L 转成多光标,再操作。否则,粘贴、缩进、甚至按 Tab 都可能让行为失控。











