用^//\s*todo.*$删除纯单行todo注释,需启用正则和匹配行首;删块注释中fixme用/\*\s*fixme[\s\s]*?\*/;删typescript三斜杠注释用^///\s.*$并注意排除///指令。

VSCode 查找框里怎么写正则删掉 // TODO 开头的单行注释
直接用 ^//\s*TODO.*$,勾选「使用正则表达式」和「匹配行首」(^ 依赖这个)。注意 // 是字面量,不能漏掉斜杠;\s* 吃掉可能的空格;.* 匹配到行尾,确保整行被选中。
常见错误:只写 // TODO 不加 ^ 和 $,结果把代码里含 // TODO 的字符串也误删了;或者忘了勾选「匹配行首」,^ 就不生效。
- 必须开启搜索面板右上角的
.*按钮(正则模式) - 如果注释后还有代码(如
// TODO: fix this; console.log(1)),这个正则不会匹配——它只删「纯注释行」。要删混写行,得换成//\s*TODO[^;]*;这类更具体的模式 - JavaScript/TypeScript 文件里,
//注释是安全的;但 CSS 或 HTML 中的//不是合法注释,这种匹配可能误伤伪注释
想删 /* ... */ 块注释里带 FIXME 的整块内容
用 /\*\s*FIXME[\s\S]*?\*/。关键在 [\s\S]*?:VSCode 的正则引擎不支持 (?s) 标志,没法让 . 匹配换行,所以必须用 [\s\S] 代替;*? 是非贪婪,避免跨多块注释合并删除。
典型翻车点:写成 /\*.*FIXME.*\*/,结果从第一个 /* 一直吃到文件末尾最后一个 */,整段代码全没了。
- 测试时先用「查找」确认匹配范围,再点「全部替换为空」
- 如果块注释嵌套(虽然 JS 不允许,但有人手写),这个正则会失效——正则本身不处理嵌套
- 部分旧版 VSCode 对
[\s\S]支持不稳定,若不生效,可临时升级或改用扩展(如 Regex Previewer)验证
批量删所有以 /// 开头的 TypeScript JSDoc 注释
用 ^///\s.*$ 配合「匹配行首」。TypeScript 的三斜杠指令(如 ///<reference></reference>)也以 /// 开头,但后面没空格,所以加 \s 能排除它们,只删真正的人写注释。
别用 ^///.*$——它会把 ///<reference path="..."></reference> 也干掉,导致类型检查失败。
-
///和/**是两类东西:///是单行、仅限顶部、用于三斜杠指令或简单注释;/**是标准 JSDoc,需用另一套正则处理 - 如果文件里有
///后紧跟字母(如///foo),\s会跳过,得改成^///(?!\w)排除紧接单词字符的情况 - 删除前建议先「全部查找」,看看是否意外命中了配置行或模板字符串里的
///
为什么有些注释死活不被匹配?检查这三点
不是正则写得不够炫,大概率是环境卡点没过。
- 搜索范围是否限定在「当前文件」而非「整个工作区」?误选「所有文件」时,某些文件编码(如 GBK)会导致正则乱码失效
- VSCode 设置里
search.usePCRE2关闭时,部分语法(如\R换行符)不可用;打开它需要重启窗口,且可能影响其他插件 - 文件语言模式是否正确?比如 .ts 文件被识别成 plaintext,
//就不会被当作注释语法高亮,但正则仍能匹配——不过你容易误判「为什么没高亮就等于没匹配」
最常被忽略的是:VSCode 默认关闭「跨文件搜索时包含未打开的文件」,如果你只开了 2 个标签页,却点了「在所有文件中查找」,其实只扫了这俩文件——那个藏在 src/utils/ 里的目标注释根本没进搜索范围。











