Sublime Text 删除注释需先块后行:块注释用/*[\s\S]*?*/(开启“. matches newline”),行注释用^\s(//|#).$;Python三引号和HTML注释须单独处理,操作前务必备份并人工核验。

Sublime Text 没有一键删注释的原生功能,所谓“批量删除”本质是两步正则替换 + 人工核验,跳过任何一环都可能把 https://api.com/v1 或 url = "https://a.com#anchor" 一起干掉。
怎么安全删掉 // 和 /* */ 注释(C/JS/Java 风格)
必须先块后行,顺序颠倒会漏删或切碎注释块。块注释若跨行,//.*$ 根本匹配不到内部的 //;而如果先删行注释,又可能让块注释起始符 /* 被误当普通字符干扰后续匹配。
- 删块注释:查找框填
/\*[\s\S]*?\*/,务必勾选 “. matches newline”(右下角那个.\n图标),替换留空 - 删行注释:查找框填
//.*$,不勾选 “. matches newline”,替换留空 - 别用
/*.*?*/——.默认不匹配换行符,多行注释直接失效;[\s\S]才是 Sublime 里真正覆盖所有字符的写法 - 非贪婪量词
?是关键:没它就会从第一个/*一路吃到文件末尾最后一个*/,中间所有代码全被吞掉
为什么 ^\s*(//|#).*$ 比 //.*$ 更安全
直接搜 //.*$ 会把 fetch('https://api.com') 这类 URL 里的 // 当注释删掉;而加了行首锚点和空白符约束的 ^\s*(//|#).*$ 只匹配整行以可选空白 + 注释符开头的内容,大幅降低误伤概率。
-
^和$锁定整行边界,排除字符串、URL、正则字面量里的干扰项 -
\s*允许行首有空格或制表符,兼容缩进后的注释(如 Python 的模块级# TODO) - 该正则不处理行尾注释(如
int x = 1; // init),避免误删代码主体——这是有意为之的设计取舍 - Python 文件慎用:仍会误删
url = "https://example.com#anchor",这种必须人工抽检
Python 三引号和 HTML 注释怎么单独处理
Python 的 """docstring""" 和 HTML 的 <!-- comment --> 完全不能套用 C 风格正则,语法结构不同,强行混用等于主动埋雷。
- Python 三引号注释:查找
"""[\s\S]*?"""或'''[\s\S]*?''',同样要开 “. matches newline”;但注意:正则无法区分 docstring 和普通字符串,"""hello"""在函数体里可能是文档字符串,在 f-string 里也可能是拼接内容 - HTML 注释:用
<!--[\s\S]*?-->,别用<!--.*?-->——.不跨行,多行注释就漏掉 - HTML 条件注释(如
<!--[if IE]><![endif]-->)会被上面的正则整段吃掉,删完直接废掉 IE 兼容逻辑 - CSS 中的
url(/*.png)也可能被/\*.*?\*/误匹配,这类场景建议手动处理或交给构建工具(如 cssnano)
真正麻烦的从来不是正则写不对,而是你删完才发现某段“注释”其实是模板引擎的占位符、JSON 配置里的手写标记、或是调试时临时插入的断点逻辑——这些都不会高亮,但删了就跑不通。操作前 Ctrl+S 备份,删完至少扫三处:含 // 的 URL 行、SQL 字符串里的 --、以及块注释包裹的缩进代码是否塌陷成一团。

















