Ctrl+Shift+K删除整行而非列,垂直删除需列选择后按Delete/Backspace;Alt+拖拽或Ctrl+Alt+↑/↓可建列选区,须开启空格可视化并关闭自动折行以确保精准。

Ctrl+Shift+K 删的是行,不是列——别误用
想删一列(比如每行第10个字符开始的3个字符),Ctrl+Shift+K完全没用。它只认光标所在**行号**,永远删整行,和列无关。误以为按它就能“竖着删”,结果整行消失,还找不到原因。
真正垂直删除靠的是**列选择 + Delete**:先框出矩形区域,再按 Delete 或 Backspace —— 这才是删“块”的正确路径。
-
Delete删光标后方字符,列选中时删的是每行对应列位置之后的内容 -
Backspace删光标前方字符,列选中时删的是每行对应列位置之前的内容 - 如果想精准删某列固定范围(如第5–8列),必须用鼠标或快捷键拉出刚好覆盖该范围的矩形选区
怎么拉出真正的垂直选区?Alt+拖 vs 快捷键选
两种方式都能生成列选区,但行为细节不同:
- 鼠标方式:
Alt(Windows/Linux)或Option(macOS)+ 鼠标左键拖拽 → 拉出矩形,松手即生效 - 键盘方式:
Ctrl+Alt+↑/↓(Windows/Linux)会在当前光标列上下行插入额外光标,适合已对齐的多行;Shift+Alt+I在每行末尾加光标,不适合删中间列 - 关键前提:确保编辑器开启了空格/制表符可视化(
"editor.renderWhitespace": "all"),否则 Tab 和空格混在一起,列定位会偏移
删完发现删多了?撤销不一定管用
列选择后按 Delete 属于多光标操作,VSCode 的撤销栈默认只保留最近 100 步。如果你删完又写了几十行新代码,那条删除记录很可能已被挤掉。
- 删前建议先
Ctrl+Shift+P→ 输入File: Save As备份当前文件 - 列选中后,别急着按
Delete,先看一眼状态栏右下角是否显示“x columns selected”或类似提示,确认范围无误 - 如果误删了部分,
Esc可退出多光标模式,但不会撤销删除动作——得靠Ctrl+Z,且仅限未被覆盖前
折叠区域、长行折行会影响列选择吗?
不影响。VSCode 的列选择基于**文档坐标**(行号 + 列号),不是屏幕渲染位置:
- 代码被折叠时,折叠行仍按原始行号参与列选择,删的是那一整行(含折叠标记)
- 某行因过长被自动折行(soft wrap),视觉上显示为两行,但文档里仍是1行;列选择时,第二“屏”部分不参与,只按实际列号计算
- 所以,列选择前最好关掉
"editor.wordWrap": "on",避免误判列边界


















