Sublime批量删除//行注释需用正则^\s*//.*$匹配整行(含前后空格),替换为空;块注释用/\*\s*\S*\*/或启用. matches newline后/\*.*?\*/;再用^\s*$清理空行,注意检查搜索范围与语法高亮干扰。

Sublime 怎么用正则批量删掉 // 行注释
直接匹配整行只有 // 注释(前后可有空格)的行,再整行删除。别用模糊匹配,否则容易误删带 // 的字符串或代码逻辑。
- 打开「Find → Replace」,勾选
Regular Expression(Alt+R) - 查找框填:
^\s*//.*$——^和$锁定整行,\s*吃掉开头空格,.*匹配注释内容 - 替换框留空,点
Replace All - 注意:这个不会动
/* ... */块注释,也不会碰console.log("//xxx")这类字符串里的//
删 /* ... */ 块注释要用非贪婪匹配
Sublime 默认正则引擎是 PCRE,但不支持 .*? 这种非贪婪语法?错——它支持,但必须显式启用 dot matches newline(. 匹配换行符),否则 /*.*?*/ 根本跨不了行。
- 查找框填:
/\*[\s\S]*?\*/—— 更可靠,[\s\S]确保匹配任意字符(包括换行) - 或者开启
dot matches newline(图标.\n),再用:/\*.*?\*/ - 替换留空;但小心:如果块注释嵌套(虽然 JS/C 不合法),它会从第一个
/*匹配到最后一个*/,删掉中间所有东西 - 建议先
Find All看一遍匹配范围,确认没吞掉不该删的代码
删注释时保留空行还是压缩成一行?
默认替换会把整行注释(比如 // xxx)替换成空字符串,结果留下空行。如果你想要“干净缩进”,得额外处理空行。
- 删完行注释后,再执行一次:
^\s*$→ 替换为空,可清掉纯空行和只含空格的行 - 但别急着全删——有些空行是逻辑分隔,删了反而难读;建议只对连续多个空行做压缩:
\n\s*\n\s*\n→\n\n -
/* ... */删除后可能残留空行,尤其是块注释独占多行时,需单独检查上下文
为什么有时候正则明明写对了却没反应?
常见不是正则错,而是 Sublime 的搜索上下文没设对:它默认只搜当前光标位置起始的可见区域,或者被限在某个 scope(比如只搜字符串内)。
- 确保「In Selection」没被意外勾选(右下角状态栏有提示)
- 如果文件大,检查是否开启了「Limit search to viewport」(视口限制),关掉它
- 部分语法高亮插件会干扰注释识别(比如把
//当作字符串的一部分),临时切到Plain Text语法再试 - 正则里用了中文括号、全角空格、或复制粘贴带隐藏 Unicode 字符(如
U+200B),会导致匹配失败——粘贴后手动敲一遍最稳妥
真正麻烦的是混合注释场景:一行里既有 // 又有 /*,或者注释紧贴代码末尾(foo(); // comment)。这种得拆两步处理,不能指望一个正则通吃。










