ctrl+shift+k(win/linux)或 cmd+shift+k(macos)是唯一能真正“删整行不留空”的快捷键,它删除光标所在行全部内容及换行符,使下一行直接顶上,不依赖选区、支持多光标、避免空行残留。

Ctrl+Shift+K(Windows/Linux)或 Cmd+Shift+K(macOS)是唯一能真正“删整行不留空”的快捷键。
它删除的是光标所在行的全部内容加换行符,所以第5行消失后,第6行会直接顶上来,不会留下空行。这不是视觉错觉,是 Sublime 的底层行为设计。
Ctrl+Shift+K 为什么能保证不留空?
- 它不依赖选区,只看光标垂直位置:光标在第3行任意字符上,就删第3行整行(含换行符)
- 不像
Delete或Backspace那样只删内容、留换行符;也不像Ctrl+X剪切后还占着剪贴板 - 多光标下(比如用
Ctrl+L→Ctrl+Shift+L拆出多个光标),每个光标所在行都会被独立删掉,且各自带换行符,结果依然紧凑无空行
常见误操作:
- 用鼠标拖选整行再按
Delete:容易漏掉换行符,上下行意外合并或残留空行 - 按
Ctrl+K, Ctrl+K:只删到行尾,剩下行首部分,根本不是“整行” - 直接搜关键词点 Replace All:只替换文本,不删行,必然留空行甚至破坏结构
批量删多行时怎么避免空行残留?
Ctrl+Shift+K 本身不支持“一次删多行”,连按只是顺序删(光标自动下移)。真要批量删,必须先让操作对象对齐:
- 连续多行:按住
Shift+↓选中区域 → 按Delete(注意:这里用Delete是因为已选中含换行符的完整区域) - 不连续多行:按住
Ctrl(Win/Linux)或Cmd(macOS),点击多行左侧空白处(出现虚线框即整行选中)→ 再统一按Ctrl+Shift+K - 已有选区但不确定是否含换行符:先按
Ctrl+L确保整行被选中(含换行符),再按Ctrl+Shift+K
别用 Ctrl+A 全选后删——它不包含最后一行的换行符,末尾会留一个空行。
删匹配行时正则怎么写才不残留空行?
靠快捷键做不到条件筛选,必须用 Ctrl+H 正则替换,但关键在于锚定 + 换行符显式匹配:
- 删所有空行:
^\s*$\n(结尾\n必须写,否则最后一行空行删不掉) - 删 JS 单行注释:
^//.*$\n - 删含
console.log的行:^.<em>console.log.</em>$\n(点号要转义)
必须勾选右下角 .<em></em>(Regular Expression),并确认右下角 \n 图标未高亮(即 “. matches newline” 关闭)——否则 . 会跨行吞掉换行符,导致删错范围。
执行前务必点 Find All,看命中的行数是否符合预期。Replace All 后如果发现空行还在,大概率是正则没写 \n,或者没关 “. matches newline”。
最后一行删完,光标停在倒数第二行末尾——这是 Sublime 移除换行符后的自然状态,不是 bug。如果你看到空行,基本可以断定:要么没用 Ctrl+Shift+K,要么正则里漏了 \n,要么 “. matches newline” 被意外打开了。











