Ctrl+/仅注释选中行或光标所在行,Ctrl+Shift+/才支持块注释但需语法包明确支持;列选择适合视觉对齐注释;自定义快捷键可强制行注释但勿覆盖默认绑定。

Ctrl+/(Win/Linux)或 Cmd+/(macOS)是唯一需要记住的多行注释操作,但它的行为取决于你是否选中代码、当前语法类型,以及你真正想要的是“逐行注释”还是“块注释”——这两者在 Sublime 中完全不是一回事。
Ctrl+/ 注释的是“选中的行”或“光标所在行”,不是整段逻辑块
很多人误以为 Ctrl+/ 会智能识别函数体或 if 块并注释整个结构,实际它只看两件事:有没有选中文本,以及光标在哪行。没选中任何内容时,它只处理光标所在的那一整行(哪怕光标停在中间某个字符上)。选中了 5 行,它就给这 5 行每行开头加注释符。
- 选中代码后按
Ctrl+/→ 每行前插入对应语言的单行注释符号(#、//或<!--) - 没选中,光标在第 12 行 → 只注释第 12 行
- 选中跨行但包含空行 → 空行也会被加上注释符(如
#),取消注释时同样会尝试移除,可能残留空注释行 - 右下角显示
Plain Text时,Ctrl+/默认不生效;必须先点击它 → 选择正确语法(如Python、JavaScript)
Ctrl+Shift+/(Win/Linux)或 Cmd+Option+/(macOS)才是真正的块注释快捷键
这个组合键才负责生成 /* ... */ 或 <!-- ... --> 这类包裹式注释,但它有硬性前提:当前语法必须明确支持块注释。Python 的 .sublime-syntax 文件默认不启用该行为,所以你在 Python 文件里按 Ctrl+Shift+/ 很可能没反应;而 JavaScript、CSS、HTML 则通常可用。
- 选中一段代码(含换行)→ 按
Ctrl+Shift+/→ 自动在外围插入匹配的块注释边界 - 再次按下同一快捷键 → 移除最外层的块注释,不碰内部已有的行注释
- 如果快捷键无效,检查语法是否为
Plain Text,或确认语言包是否禁用了block_comment规则 - 不推荐在 Python 中强求
""" """用这个快捷键实现——Sublime 不原生支持把它当作块注释符号来 toggle,那是编辑器功能层面的限制
列选择(Alt+拖拽 / Option+拖拽)适合手动控制注释位置
当你需要在多行相同列位置插入 # 或 //(比如对齐参数说明、临时禁用某列赋值),列选择比依赖语法更可靠。它绕过语言定义,纯靠视觉定位。
- 按住
Alt(Win/Linux)或Option(macOS),鼠标左键从上到下拖出一个矩形区域 - 松手后,在该区域内所有行的相同列位置同时输入
#或其他符号 - 适合处理不规则缩进、YAML/INI 配置、日志样本文本等非标准代码场景
- 注意:如果拖拽起点不在行首,输入的符号不会自动对齐到行首,需手动补空格
自定义快捷键能强制统一注释风格,但别覆盖默认行为
如果你常在 JavaScript 文件里写 Shell 脚本片段,又不想切语法模式,可以单独绑定一个快捷键,让它永远用 # 注释,不管当前是什么语言。但这属于“覆盖逻辑”,不是“增强逻辑”。
- 打开
Preferences → Key Bindings,在用户配置中添加: [{"keys": ["ctrl+alt+c"], "command": "toggle_comment", "args": {"block": false}}- 其中
"block": false强制走行注释路径,避免触发语言包里的块注释逻辑 - 不要直接修改
Ctrl+/的绑定——它被多个插件和核心命令依赖,改了容易导致Emacs Pro Essentials等插件失效 - 自定义键位建议避开常用组合(如
Ctrl+Shift+C已被系统复制占用)
真正容易被忽略的是:Sublime 的注释行为由语法定义文件(comment.tmPreferences)驱动,而不是编辑器内核硬编码。这意味着即使你改了快捷键,如果对应语言的语法包没声明 block_comment_start,Ctrl+Shift+/ 就永远不会生效——这不是 bug,是设计使然。

















