Sublime Text 可通过 Find + Replace 配合正则安全删注释:JS/TS/C++ 用 //.*$,Python/Shell 用 #.*$,推荐加负向断言避免误删字符串内符号。

Sublime Text 本身不提供“一键删注释”的菜单项,但用自带的 Find + Replace 配合正则表达式,能安全、可控地批量清除注释——前提是分清语言、注释类型和边界条件。
匹配单行注释(如 // 和 #)
多数语言的单行注释以特定符号开头、延续到行尾。直接用 ^.*//.*$ 会误删整行(包括代码),应只匹配注释部分:
- JavaScript/TypeScript/C++:用
//.*$,勾选Regular expression和Match case(避免误伤 URL 中的//) - Python/Shell:用
#.*$,但注意避开字符串内的#(正则无法完美处理,需人工复查) - 更稳妥写法:加负向先行断言,例如
(?(跳过引号内和转义后的#),但 Sublime 的 PCRE 支持有限,该写法在 v4+ 可用,v3 不支持(?
匹配多行注释(如 /* */ 和 """ """)
多行注释不能简单用 /\*.*?\*/ —— 默认是贪婪匹配,.* 会跨行吞掉中间所有内容,且 Sublime 默认不匹配换行符。
- 启用跨行匹配:在
Find框右下角点.\n图标(或按Alt+R切换Dot matches newline) - C/Java 风格:用
/\*[\s\S]*?\*/([\s\S]兼容所有 Sublime 版本,比.*更可靠) - Python 文档字符串:用
"""[\s\S]*?"""|\'\'\'[\s\S]*?\'\'\',但注意它可能嵌套在函数体中,删除后易破坏缩进结构 - 危险操作:不要用
/\*.*\*/(无?),它会从第一个/*匹配到最后一个*/,横跨多个函数甚至文件
排除字符串和正则字面量中的注释符号
这是最常翻车的环节。正则本身无法解析语法树,所以严格意义上无法 100% 安全剔除字符串内的伪注释,但可大幅降低误伤概率:
- 先手动检查高频风险区:JSON 文件里的
//、模板字符串中的#、正则字面量如/a\/\/b/ - 分步清理:先删单行注释,保存;再删多行注释,每次替换前用
Find All预览匹配位置 - 对 JS/TS 项目,建议配合 ESLint 规则
no-unused-comments或使用eslint --fix自动移除无用注释,比正则更语义化
替换时保留换行,避免代码粘连
直接替换成空字符串,会让 console.log(1); // comment 变成 console.log(1);(正常),但若注释独占一行,如:
foo(); // bar baz();
用 //.*$ 替换为空,结果变成:
foo(); baz();
表面没问题,但若原注释前有空行、后有空行,删除后可能合并多行导致格式错乱。更稳妥的做法:
- 替换成
\n或\r\n(视文件换行符而定),保持行数不变 - 或用
//.*$→(一个空格),再配合 Sublime 的Trim Trailing White Space on Save设置自动清理 - 执行前务必
Save当前文件,或先在副本上测试
真正难的不是写出正则,而是判断哪段注释该留、哪段该删、哪段其实是配置或模板占位符。批量删注释前,先想清楚:这段注释是过期文档,还是调试残留,抑或是别人写的接口说明?正则干得快,但读代码的人不会感谢你删掉了唯一能看懂逻辑的那三行。










