Ctrl+/对长代码块无效,因其仅为行级注释切换命令,未选中时仅操作光标所在行,选中多行则逐行添加//或#,不生成/ /等包裹式注释;真正块注释需用Ctrl+Shift+/(Win/Linux)或Cmd+Option+/(macOS),且依赖语法支持与选区合规。

Sublime 里“长文本代码块”不能靠 Ctrl+/ 直接包裹注释,它默认只做行级切换;真要包裹(如 /* */ 或 <!-- --> ),得用 Ctrl+Shift+/(Windows/Linux)或 Cmd+Option+/(macOS),但前提是语法支持且选区合规。
为什么 Ctrl+/ 对长代码块无效?
它根本不是块注释命令,而是 toggle_comment 的行级实现:未选中时只动光标所在行;选中多行时,对每行开头单独加/删 // 或 #。哪怕你选了 20 行函数体,它也不会生成 /* ... */,只会塞 20 个 //——缩进错乱、语义混乱、后续格式化工具(如 Prettier、black)可能直接报错。
- 常见误操作:全选代码后狂按
Ctrl+/,结果每行都多了//,而你想的是包裹式隐藏 - Python 文件里按
Ctrl+/永远不会出"""——因为原生语法没定义block_comment,它不“猜”,只“执行” - JSX 或 Vue SFC 中,
<script></script>块能响应Ctrl+Shift+/,但<template></template>区域常失效,因 HTML 作用域未覆盖该 scope
Ctrl+Shift+/ 能用的前提是什么?
这个快捷键调用的是 toggle_block_comment,但它不是“通用开关”,而是一个受语法定义严格约束的操作:
- 当前文件右下角语法名必须是支持块注释的语言(如
JavaScript、CSS、HTML、C++),Plain Text或Python下基本静默 - 必须先完整选中目标代码段(不能只把光标放在开头就按)
- 选区不能跨空行、不能混杂已注释行(例如第 3 行已有
// todo,Sublime 可能直接跳过或退化为行注释) - 部分语言包(如某些 CSS 语法)压根没配
blockComment字段,此时快捷键形同虚设
列编辑 + 手动补符号是最稳的长文本注释法
当快捷键不可靠或语法不支持时,用列编辑手动加包裹符,反而更快、更可控,尤其适合临时调试、大段配置、日志片段等非标准代码块:
- 按住
Alt(Windows/Linux)或Option(macOS),鼠标从第一行开头垂直拖到最后一行开头,松开后光标列对齐 - 输入
/*(JS/CSS)或<!--(HTML),所有行首同步出现 - 再用
Ctrl+End(或Cmd+→)跳到每行末尾,Alt+拖拽选中所有行尾位置,输入*/或--> - 如果中间有空行或缩进不齐,先按
Ctrl+Shift+P→ 输入Indentation: Reindent Lines整理再操作
真正容易被忽略的点
注释行为不取决于你写了什么,而取决于 Sublime 认为你在写什么——右下角那个小小的语法名,才是控制权开关。哪怕你粘贴了一段完美 JS 代码,只要状态栏显示 Plain Text,Ctrl+Shift+/ 就不会触发 /* */,Ctrl+/ 也只会插入无意义的 //。临时文件、无后缀配置、编码异常、插件劫持作用域……都会让这个开关失灵。别急着重装插件,先点右下角手动切一次语法,90% 的“注释失效”当场解决。

















