sublime text删行首用ctrl+shift+backspace(delete_to_beginning_of_line),删行尾用ctrl+shift+k(right_delete),二者均原子化且不跨行;批量清理空白推荐正则^[\t]+或\s+$,保存自动清理需启用trim_trailing_white_space_on_save。

Sublime Text 里删到行首或行尾,根本不需要“教程”——它已经内置了稳定、原子化的命令,但很多人按错快捷键、拼错命令名,或者误以为连按就能批量操作,结果删错位置、漏删、甚至触发意外撤销行为。
删到行首用 delete_to_beginning_of_line,不是 delete_line
光标在某行中间时,想清掉它左边所有内容(不含换行符),直接按 Ctrl+Shift+Backspace(Windows/Linux)或 Cmd+Shift+Backspace(macOS)。这个快捷键绑定的是 delete_to_beginning_of_line 命令。
- 它只删当前行光标左侧文本,保留换行符,不会影响下一行位置或行号
- 别和
delete_line混淆:delete_line是删整行(含换行符),快捷键是Ctrl+Shift+K,行为完全不同 - 自定义快捷键时若把命令名拼成
delete_beginning_of_line或漏掉_of_,绑定会静默失败——Sublime 不报错,但按键没反应 - 多光标下每个光标独立执行,安全可靠;而用
Ctrl+K, Ctrl+A组合容易因 mark 残留导致删偏
删到行尾必须用 right_delete,别依赖 End + Delete
删光标右侧至本行末尾(不含换行符),正确方式是 Ctrl+Shift+K(Windows/Linux)或 Cmd+Shift+K(macOS)——它调用的是 right_delete 命令。
- 这个操作是原子性的:一次删除算一个撤销单位,不拆成多个步骤
-
End + Delete不可靠:开启 soft wrap 时End停在视觉行尾而非物理行尾;某些插件还会重绑定End键 - 它不会跨行,哪怕光标在最后一列,也只删到
\n前,绝不吞掉下一行开头 - 注意:连续按两次
Ctrl+Shift+K不等于删两行——第一次删完,光标落在下一行开头,第二次删的是“新当前行”,逻辑上仍是单行操作
批量删行首/行尾空白,正则比快捷键更可控
想一次性清理所有行首空格或制表符,别手动挪光标,用 Ctrl+H 打开替换面板,开启正则模式,输入 ^[ \t]+,替换框留空,点 Replace All。
-
^锚定行首,[ \t]+匹配一个及以上空格或制表符(方括号里的空格不能省) - 如果只想删空格不碰 Tab,用
^ +(末尾带一个空格) - 删行尾空白用
\s+$,删行首+行尾一起用^\s+|\s+$ - 执行前务必先点
Find All,确认匹配数是否符合预期;混用\r\n和\n会导致匹配偏移,建议先统一换行符为LF
保存时自动清理行尾空格,原生配置就够了
不需要插件。在 Preferences → Settings – User 的 JSON 中加这一行:
"trim_trailing_white_space_on_save": true
保存后,每次 Ctrl+S 就会自动删掉所有非空行末尾的空格和制表符。
- 它不碰缩进空格、不删空行、不改行中空格,非常克制
- 如果没生效,优先检查右下角语法类型(如
source.python)是否在语法专属设置里禁用了该选项 - 项目级配置(
.sublime-project)或插件(如 LaTeXTools)可能覆盖此设置,得单独去对应地方打开 - 想边写边清?再加一行
"trim_automatic_white_space": true,光标移出某行就立刻清理其尾部空白
真正容易被忽略的是:这些清理动作都基于“行”的语义,而 Sublime 对行的判断严格依赖换行符格式。混用 \r\n 和 \n 会让 Ctrl+L 选行错位、正则 ^ 锚定失效、多光标拆分不准——这不是 bug,是底层逻辑前提,统一前别急着删。











