ctrl+shift+l 拆行删除需光标落在换行符上,否则末行不拆;安全做法是先用 ctrl+l 逐行选中(含换行符)再执行;ctrl+d 字面匹配无上下文识别,注释字符串内同名内容也会被选中删除。

Ctrl+Shift+L 拆行后删除,光标必须落在换行符上
这个操作不是“选中几行就删几行”,而是把选区按 \n 或 \r\n 切片,每片末尾放一个光标。如果最后一行没选中换行符,它就当单行处理,只生成一个光标,删完只剩首行内容。
安全做法:
- 先用
Ctrl+L(Windows/Linux)或Cmd+L(macOS)逐行选中目标行(确保每行都含换行符) - 再统一按
Ctrl+Shift+L,光标稳稳落在每行末尾 - 此时按
Delete或Backspace,所有行末尾内容同步删;想删整行?按Home跳到行首,再按Shift+End选中整行,最后Delete
Ctrl+D 选词删除时,注释和字符串里的同名内容也会中招
Ctrl+D 是严格字面匹配,不区分上下文。双击一个 user_id 变量后连按 Ctrl+D,如果某行注释里写着 // user_id is deprecated,它照样选中——删掉就可能破坏注释结构。
应对方式:
- 删前先扫一眼所有高亮位置,尤其注意引号内、
//后、/* */中 - 想跳过当前匹配项?按
Ctrl+K再按Ctrl+D,光标直接跳到下一个 - 误选太多?
Ctrl+U逐次撤销最近添加的光标,比Esc全清更可控
列选择(Alt+拖拽)删竖列,等宽字体是硬性前提
用 Alt(Windows/Linux)或 Option(macOS)+ 鼠标垂直拖拽,本质是按字符列定位。如果当前字体不是等宽(比如用的是系统默认的微软雅黑),拖出来的区域会错位,删掉的可能不是你想删的那一列。
检查与修复:
- 打开
Preferences → Settings,确认"font_face": "Consolas"或其他等宽字体已启用 - 拖拽起点优先选在行首空白处或缩进空格段,避开单词中间、符号边界
- 删完发现某行少删或多删?说明该行缩进用了混合空格/Tab,先统一用
View → Indentation → Convert Indentation to Spaces
多光标状态下退格/回车,方向键一碰就全丢
多光标不是稳定状态,Esc、任意方向键、Ctrl+X、甚至鼠标滚轮滚动过快,都会清空除主光标外的所有光标。这不是 bug,是设计逻辑:它只保留“你正在主动操作”的那个焦点。
降低风险的关键习惯:
- 禁用
"drag_text": true—— 否则Ctrl+Click会拖动文本而非加光标,必须在用户设置里加"drag_text": false并重启 - 批量删前,先用
Ctrl+Shift+P输入Column Selection手动开启列模式,比依赖鼠标更可靠 - 删完别急着输新内容,先按
Ctrl+Shift+P→Selection: Expand Selection to Line确认光标仍在预期位置
真正卡住人的,从来不是快捷键记不住,而是删到一半才发现某处光标早被方向键悄悄清掉了,还浑然不觉。每次按下 Delete 前,花半秒扫一眼状态栏右下角的光标计数(如 3 cursors),比事后找漏强十倍。











