sublime多光标(ctrl+shift+l)不自动删行首空格,需先用正则^[\ \t]+查找并选中所有行首空白,再shift+→扩展选区后delete删除;ctrl+shift+k会误删整行,不可用于删空格。

多光标本身不直接删行首空格,得先选中再删
Sublime 的多光标(Ctrl+Shift+L)只是把每行变成一个独立光标,它不会自动识别或选中行首空格。你得在光标就位后,手动扩展选区——否则按 Delete 或 Backspace 删的只是光标前一个字符,不是整段空白。
常见错误是:拆完光标就直接狂按 Delete,结果只删了每行第一个空格,剩下七八个还在那儿。
- 先用
Ctrl+F搜^[ \t]+,勾选「Regular Expression」和「Find All」,高亮所有行首空白 - 再按
Ctrl+Shift+L,把每个匹配项转成光标(此时光标都落在行首空白起始处) - 接着按
Shift+→(或Shift+End)扩展选中从光标到空白结束的位置——注意别松手太早,要看到整段空白被反白 - 最后按
Delete一次性删掉所有选中的行首空白
为什么不用 Ctrl+Shift+K?它删的是整行,不是空白
Ctrl+Shift+K 的作用是「删除当前光标所在行(含换行符)」,和行首空格完全无关。哪怕你把光标精准放在第一个空格上,它也会把整行干掉,包括代码内容。
这个快捷键对删空行有用,但对清理缩进毫无意义,反而极易误删。
- 想保留代码、只动空白?必须用「选中 + 删除」组合,不能依赖删行类快捷键
- 如果已误触发
Ctrl+Shift+K,立刻按Ctrl+Z撤回,别等第二下 - 部分用户会把
Ctrl+Shift+K和Ctrl+Shift+P(命令面板)搞混,输错命令时容易慌神乱按
正则 + 多光标混合用,比纯正则更可控
纯正则替换(^[ \t]+ → 空)确实快,但它是一次性全局操作,没法跳过某些特殊行(比如注释开头带空格的配置行)。而多光标+正则查找,能让你肉眼确认每处匹配是否该删。
尤其适合处理混合格式文件:比如 YAML 中的缩进空格要留,但日志行前的多余空格得清。
- 先
Ctrl+F输入^[ \t]{2,}(删至少两个空格/Tab),避开单空格缩进 - 点「Find All」,再
Ctrl+Shift+L拆光标 - 用
Ctrl+Shift+P输入「Show Scope」,看光标当前是否在source.yaml或text.log区域,避免误入代码块 - 确认无误后,
Shift+→选中再删
删完记得检查不可见字符是否残留
有些空格看着像空格,其实是全角空格(\u3000)、零宽空格(\u200b)或 BOM(\uFEFF),[ \t] 根本匹配不到。它们会导致后续格式校验失败,比如 Git 提示「trailing whitespace」却找不到哪儿有空格。
打开 View → Show White Space(或 Ctrl+Shift+P 输入 toggle_whitespace),看行首是否出现 ·、→ 或其他符号。如果有,说明正则漏了。
- 临时补救:把查找内容换成
^[\s\u200b\uFEFF\u00a0\u3000]+ - 但注意:加了 Unicode 字符后,务必关掉右下角的
. matches newline,否则\s可能跨行吞内容 - 真正难搞的是嵌入在字符串里的不可见字符——这种得靠
Ctrl+Shift+P → Find in Files全局搜\u200b,不能只靠行首清理











