Sublime怎么一键删除所有注释 Sublime正则匹配删除注释【干货】

10次阅读

sublime中需按语言类型分步删除注释:先用/*sS*?*/删块注释(勾选. matches newline),再用//.*$或s*#.*$删单行注释;html/css/lua等因语法差异不可通用同一正则,误删风险高,建议先确认语法类型并预览匹配结果。

Sublime怎么一键删除所有注释 Sublime正则匹配删除注释【干货】

Sublime 里用正则一键删单行和多行注释

能,但得看语言类型和注释风格——//#/* */ 的匹配逻辑完全不同,不能套一个正则走天下。Sublime 的「Find → Replace」支持 PCRE(perl 兼容正则),足够覆盖主流场景,关键是写对模式、避开误删。

删除 C/java/js 风格的 ///* */ 注释

这类语言混合了行内单行注释和块注释,必须分两步处理,否则 /* ... */ 跨行时容易漏掉或误吞代码。

  • 先删块注释:Find What: /*[sS]*?*/Replace With: 空(注意勾选 . matches newline
  • 再删单行注释:Find What: //.*$Replace With: 空(勾选 Regular expression + Match case 可选)
  • 风险点:[sS]*? 是非贪婪匹配,避免误吞多个 */ 中间的合法代码;若文件含字符串 "/* comment */",该正则会误删——此时需先转义字符串内容或手动处理

删除 python/Shell 风格的 # 注释(含行首/行中)

Python 的 # 注释可出现在行首或行中(如 x = 1 # init),直接删整行会丢代码,必须只删 # 及其后内容。

  • Find What: s*#.*$ —— 匹配行末注释(含前面可选空格),保留前面代码
  • 若要连行首注释也删(如整行只有 # TODO),用:^[t ]*#.*$n?,替换为空,注意勾选 Regular expressionMatch newline
  • 注意:Python 字符串里有 #(如 "url#anchor")不会被匹配,因为正则没跨引号边界;但三重引号字符串里的 # 仍可能被误伤,无完美解法

为什么不能用一个正则通吃所有语言?

因为注释语法依赖上下文:HTML 的 、CSS 的 /* */、Lua 的 --[[ ]]-- 结构差异大,且嵌套、转义规则不同。Sublime 不做语法感知,纯靠正则硬匹配,强行合并只会漏删或炸掉代码。

  • 最稳妥做法:先用 Ctrl+Shift+PSet Syntax 确认当前文件语言,再选对应正则
  • 批量删前务必 Ctrl+Z 备份或开新窗口预览(用 Find All 看高亮是否合理)
  • 真正复杂的场景(如带嵌套注释的 lisp 或自定义 DSL),别硬刚正则,用插件如 Comment-Snippets 或写小脚本更可靠

注释不是垃圾,删之前想清楚是不是真要删——比如配置文件里的 # default=1 删了就变不可逆修改。

text=ZqhQzanResources