Sublime批量删单行注释须用^\s*//.*$并关闭“Dot matches newline”,删多行注释需开启该选项并用(?s)/\*.*?\*/;操作前须确认右下角语法类型,否则易误删代码。

Sublime批量删单行注释必须加$锚定行尾
不加$会导致替换吞掉下一行开头,尤其在注释后紧跟空行或缩进不一致时。比如//.*会匹配到换行符之后的内容,而//.*$才真正限定在当前行内删除。
常见语言适配写法:
- JavaScript / C++ / Java:
^s*//.*$(^确保行首空白可选,s*兼容缩进) - Python / Shell / INI:
^s*#.*$ - HTML 注释不能用这个表达式——它用
<!--.*?-->,且必须关闭.图标(否则.*跨行误吞)
执行前务必关闭右下角的.图标(即禁用“Dot matches newline”),否则.*$可能吃掉下一行。
删多行注释必须开“Dot matches newline”并用非贪婪模式
默认.不匹配换行符,/*.**/这种写法会从第一个/*一路吃到文件末尾最后一个*/,中间所有函数、类定义全被吞掉。
正确写法是:(?s)/*.*?*/ 或 /*[sS]*?*/,但前提是点亮右下角的.图标。没点就完全不跨行,几乎匹配不到真实块注释。
不同语言注意语法识别:
- JS/CSS/Java 文件:用
(?s)/*.*?*/ - HTML 文件:必须用
(?s)<!--.*?-->,复用/*表达式会漏匹配 - JSON/YAML 文件:禁止运行该正则——它们本就不该有块注释,强行跑会破坏结构
删之前先按Ctrl+Shift+P → 输入Set Syntax → 选对语言(如JavaScript),否则"https://a.com?x=/*test*/"里的伪注释也会被误删。
批量添加/取消注释依赖语法定义,不是文件名
Ctrl+/(Windows/Linux)或Cmd+/(macOS)能否生效,只取决于右下角状态栏显示的语法类型,和文件扩展名、内容无关。哪怕你写满//,如果语法是Plain Text,它也只会机械插入//,不会做任何取消逻辑。
检查与修复步骤:
- 看右下角是否显示目标语言(如
Python、JavaScript),不是Plain Text - 若不对,按
Ctrl+Shift+P→ 输入Set Syntax→ 手动选对应语言 - 对
.env等无默认支持的文件,需通过PackageResourceViewer自定义语法,并添加comment_line_start: '#'
多行选中后按Ctrl+/的行为由语法定义决定:连续多行→逐行加//或#;跨行选中含换行符→尝试块注释(如/* */);已有注释符紧贴行首时,自动移除。
项目级批量注释操作必须显式设Where为.
用Ctrl+Shift+F打开全局替换面板后,Where字段填<project></project>或留空,都**不会**搜整个项目。真正生效的写法是单个英文点:.(不是./,也不是./src)。
安全执行建议:
- 删注释前先提交 Git,替换后用
git diff确认是否只动了注释行 - 排除干扰目录:
., -node_modules/, -dist/, -*.min.js - 匹配数超 200 时别直接
Replace All,先Find All抽检三处:开头、中间逻辑块、结尾配置段 - 发现误匹配(如 URL 或正则字面量被高亮),立刻停手,改用
Ctrl+Shift+L多光标手动处理更可控
最易被忽略的是:Sublime 不解析语法,只做字符串匹配。所谓“安全”,全靠你人工校验Find All结果——没有这一步,删掉的可能不是注释,而是某段关键初始化逻辑。


















