应使用 ^\t+ 匹配行首连续 tab:^ 锁定行首,\t+ 仅匹配一个及以上制表符;必须启用 .* 按钮开启正则模式,禁用 . matches newline;操作前需选中目标区域;若删后缩进错位,需先统一转为空格并关闭自动检测。

用 ^\t+ 匹配行首连续 Tab,不是 ^[ \t]+
想只清 Tab、不动空格,就得把空白字符范围收窄。直接写 ^\t+ 最准:^ 锁定行首,\t+ 只匹配一个及以上制表符,不会误吞空格或换行符。别用 ^[ \t]+——它会把空格也卷进来,违背“只清 Tab”的初衷;也别用 ^\s+,那会连带删掉所有空白类型,包括你可能想保留的空格缩进。
必须勾选右下角 .* 按钮,否则正则当纯文本处理
Sublime 默认关闭正则模式,^\t+ 在没点亮 .* 时就是五个普通字符,完全不触发匹配。常见失败原因就这一个:面板开着、正则写着、但按钮没点。点亮后,.* 变蓝,才算真正启用 PCRE 引擎。顺带提醒:. matches newline(那个 \n 按钮)一定别勾——一勾上,^ 和 $ 就失效,^\t+ 可能跨行乱咬。
操作前先选中目标区域,避免扫荡注释或 YAML 对齐
全选全文再点 Replace All 是高危动作,尤其对以下内容:
- Python docstring 或 JSON 字符串里靠 Tab 对齐的字段值
- YAML 文件中靠缩进表达层级的 key-value 块
- Shell 脚本里用 Tab 分隔的 case 分支
安全做法是:鼠标拖选目标段落,或按 Ctrl+L 逐行选中多行,再开替换面板。此时 ^\t+ 只在选区内生效,可控性拉满。
删完发现缩进错位?大概率混用了 Tab 和空格
如果删掉行首 Tab 后,代码块整体左移、折叠异常、甚至 Python 报 IndentationError,说明原文件同时存在 Tab 和空格缩进。Sublime 的视觉渲染和实际字符列数已脱节。立刻执行:
- 菜单 View → Indentation → Convert Indentation to Spaces
- 再关掉 Detect Indentation(避免下次打开自动切回 Tab)
这步做完再跑 ^\t+,后续所有对齐、跳转、插件行为才稳定。真正容易被忽略的是:Tab/空格混用问题不解决,任何清理操作都是临时止血。











