删除注释需分两步:先用/*[\s\s]*?*/安全删块注释(必须点亮.\n图标),再用^\s(?://|#).$精准删行首注释;不同语言需匹配对应语法,操作前必用find all抽检三处并验证回退。

先删/*[\s\S]*?*/块注释,必须点亮右下角.\n图标
块注释跨行时,.*?默认不匹配换行符,/\*.*?\*/会失效。唯一稳定写法是/\*[\s\S]*?\*/——[\s\S]显式覆盖所有字符(含换行),?确保非贪婪。不点亮.\n图标,多行注释几乎全漏;点了却用/\*.*\*/(无?),可能从第一个/*一路吃到文件末尾最后一个*/,中间代码全丢。
再删^\s*(?://|#).*$行首注释,此时必须关闭.\n图标
直接搜//.*$或#.*$极危险:会把https://api.com、url = "a.com#anchor"一起干掉。^\s*(?://|#).*$加了行首和缩进锚点,只命中真注释。但注意:^\s*不处理行中注释(如int x = 1; // init),强行删它会破坏语句结构;若真需要,得改用\s+(?://|#).*$并手动逐个确认。
不同语言必须换正则,不能靠一个表达式通吃
Python 的三引号文档字符串不是/* */,得用"""[\s\S]*?"""或'''[\s\S]*?''';HTML 要用<!--[\s\S]*?-->;CSS/JS 的/* */虽写法一样,但若文件语法被设为Plain Text,Sublime 就无法识别字符串边界,/\*[\s\S]*?\*/可能误吞"/* in string */"。操作前务必看右下角语言名,或按Ctrl+Shift+P→Set Syntax显式指定。
每步执行前必须点Find All,抽检至少三处
即使用了最稳妥的表达式,仍可能误删:const r = /a\/b/;里的/、JSON 字符串中的/*、配置文件里带# default=1的关键参数。实操必须:Ctrl+Shift+F粘贴正则 → 点Find All看高亮是否全为真注释 → 至少抽检开头、中间逻辑块、结尾配置段三处 → 删完立刻Ctrl+Z回退验证。跳过这步,恢复成本远高于预防时间。真正容易被忽略的是:删完后文件末尾可能没换行符,而 Python/Shell 项目常要求 POSIX 兼容,得手动补或运行Ctrl+Shift+P → Insert Final Newline。











