Esc是唯一可靠、即时退出列选择的方式,因其不依赖焦点、不触发撤销、只清空辅助光标并保留主光标;鼠标单击或方向键易引发光标混乱,而drag_text为true或启用Vintage模式时Esc会失效。

按 Esc 键是唯一可靠、即时生效的退出方式。 列选择不是“模式”,而是一次性拖动动作产生的临时选区;不主动退出,它会卡住后续所有多光标操作(比如 Ctrl+D、Ctrl+Shift+L 全部失效)。
为什么不能靠鼠标点或方向键退出
列选择状态下,鼠标单击编辑区可能被识别为“新光标定位”,反而在原列选区域外加一个光标,导致混乱;方向键会让所有光标尝试同步移动——但行首/行尾一卡,部分光标就消失,剩下几个错位的,更难收拾。这不是退出,是失控。
Esc 为什么最稳
Esc 不依赖焦点位置,不触发撤销栈,不改变当前光标内容,只做一件事:清空所有辅助光标,保留主光标(即你最后松开鼠标时的那个)。哪怕刚从终端切回来、刚粘贴完、甚至 drag_text 开着,Esc 都能立刻响应。
容易被忽略的两个前提
-
drag_text必须为false:如果没关,Alt+拖动实际是移动文本块,不是列选;此时按Esc虽能清空,但你根本没进过真正的列选状态——得先去Preferences → Settings用户配置里加"drag_text": false - Vintage 模式会劫持
Esc:如果view.settings().get("command_mode")返回True,说明开了 Vintage,Esc会切回命令模式而非清空光标;要么关掉 Vintage,要么用Ctrl+U逐次撤回(但不如Esc干净)
列选择本身没有“进入”和“退出”的对称操作,Esc 是设计上唯一的出口。别等它自动消失,也别指望快捷键组合替代——手移到左上角按一下,比试三次 Ctrl+Shift+L 还快。

















