Ctrl+U是软撤销,只回退光标操作(如Ctrl+D、Alt+拖动等),不撤销文字编辑;Esc是硬重置,清空辅助光标仅留主光标;方向键会触发多光标归并甚至坍缩,需谨慎使用。

软撤销不是撤销编辑,是撤销光标操作
Ctrl+U 在 Sublime 中叫“软撤销”(soft undo),但它和 Ctrl+Z 完全不是一回事:Ctrl+Z 撤的是你输的字、删的行;Ctrl+U 撤的是你加的光标、选的区域、列选的起点——它不碰任何内容,只管“怎么选的”。
- 你连按 5 次
Ctrl+D选中了 5 个变量名,第 3 个是误匹配?按一次Ctrl+U,立刻回到 4 个光标,再按一次回到 3 个……直到只剩原始光标 - 用
Ctrl+Shift+L把 10 行转成多光标后,又手抖点了某行中间——别慌,Ctrl+U能倒退那次点击带来的光标偏移 - 如果中间混用了
Alt+鼠标拖动列选和Ctrl+D,Ctrl+U仍按动作添加顺序倒退,不是按视觉位置;所以别狂按Ctrl+D,节奏稳一点更可控
为什么按方向键会“突然只剩一个光标”
多光标状态下,看似还在,其实极其脆弱。按 ← 或 ↑ 不是“移动所有光标”,而是触发强制归并逻辑:Sublime 会让所有光标尝试向同一方向走一格,但一旦某个光标卡在行首/行尾/括号边界,其余光标继续走,错位就发生了;再按一次,大概率直接坍缩成单光标。
- 这不是 bug,是设计——Sublime 默认把“方向键”理解为“结束多光标、开始单光标导航”
- 想安全移动?先按
Esc清掉所有辅助光标,只留主光标,再用方向键 - 真要批量调位置(比如统一右移 2 列),别用手动方向键,改用正则替换或
Ctrl+Shift+P→Split Selection into Lines后再处理
Ctrl+U 和 Esc 的分工必须分清
Esc 是硬重置,Ctrl+U 是软倒带。前者清空所有辅助光标、保留主光标、不进撤销栈;后者只回退上一步光标添加动作,可能还剩七八个光标。
- 光标乱飞、位置诡异、点鼠标没反应?第一反应不是查快捷键,是立刻按
Esc - 刚用
Ctrl+D选了 6 处,发现第 4 处不该选,但后面 2 处是对的?这时才轮到Ctrl+U,按两次即可撤掉那两步 - 注意:
Ctrl+U不影响你已经输入的文字,也不撤销Ctrl+H替换过的内容——它只管“选区怎么来的”
drag_text 开启时,Ctrl+U 可能失效的隐藏原因
如果你发现 Ctrl+U 按了没反应,或者光标根本加不上,大概率是 "drag_text": true 在捣鬼。这个配置默认开启,会导致 Alt+鼠标拖动 变成拖文本块,Ctrl+点击 也可能被拦截,进而干扰多光标生成链路——而 Ctrl+U 依赖这套链路才能倒退。
- 打开
Preferences → Settings,在右侧用户设置里加上:"drag_text": false - 改完无需重启,立刻生效;之后
Alt+拖动才能稳定拉出竖直列选,Ctrl+D/Ctrl+U才能正常闭环 - 顺手检查下是否误开了
swap_selection_on_move等实验性选项,它们也会让光标行为不可预测
复杂点从来不在功能多寡,而在“撤销什么”和“撤销谁”的边界模糊。很多人卡住,是因为把 Ctrl+U 当成 Ctrl+Z 的弱化版,结果越按越乱。记住:它只管光标,不管文字;只管动作顺序,不管代码语义。











