ctrl+shift+k仅删光标所在行,无法批量删多行;批量删特定行必须用正则替换,需加^和$锚定整行,并正确处理换行符与元字符转义。

Ctrl+Shift+K 只能删当前行,批量删特定内容的行必须用正则替换——靠快捷键硬点只会漏、错、留空行。
为什么 Ctrl+Shift+K 连按不能批量删多行
第一次按 Ctrl+Shift+K 删掉第5行,光标自动落到第6行开头;第二次再按,删的是“新当前行”(即第6行),不是你原本想删的第7行。这不是快捷键失效,是行为逻辑本身如此。
- 它只作用于光标所在行,不记忆历史选区
- 多光标模式下(如
Ctrl+Click行号)才能真正并行删多行,但前提是手动对齐所有目标行 - 一旦目标行不连续、无规律,手动点行号效率反不如正则
删含关键词的整行:必须加 ^ 和 $ 锚点
比如要删所有含 console.log 的行,写 console.log 会只删这个词本身;写 ^.*console.log.*$ 才删整行。Sublime 默认 . 不匹配换行符,所以这个写法安全。
- 关键词含正则元字符(如
.、*、?)必须转义:file\.txt而不是file.txt - 区分大小写?点查找框旁的
Aa图标启用Match Case - 务必关闭
. matches newline(那个\n图标),否则.*可能跨行吞掉不该删的内容
删空行、注释行等常见模式
这些不是“特殊功能”,只是固定正则组合。关键是结尾要不要带换行符——删空行时 ^\s*$\n 比 ^\s*$ 更可靠,否则最后一行空行可能残留。
- 空行或纯空白行:
^\s*$\n - JS 单行注释:
^//.*$\n - Python 或 Shell 注释:
^#.*$\n - JSON 中带
"disabled": true的整行:^\s*".*disabled.*":\s*true.*$
误删风险最高的两个操作习惯
一是直接在替换面板点 Replace All 前不点 Find All 确认命中行数;二是用 Ctrl+H 替换却忘了勾选 Regular Expression,结果什么都没删,还误以为功能坏了。
-
Find All(或Alt+Enter)能高亮所有匹配行,肉眼可验 - 删完后如果发现格式错乱(如下一行被“吸”上来),大概率是漏了
\n或用了Delete/Backspace替代Ctrl+Shift+K - 反向筛选(如“只留含 TODO 的行”)要用负向断言:
^(?!.*TODO).*\n,但注意 Windows 换行是\r\n,得按需调整
真正卡住人的从来不是不会写正则,而是没意识到:删行 ≠ 删文本,必须锚定整行边界 + 控制换行符处理。一个 ^ 或一个 \n 没写对,就等于白干。











