Ctrl+/ 是按语法、选中状态和光标位置严格触发的行级注释切换操作,不识别代码块,也不自动包裹;右下角语法名非支持类型、中文输入法、光标在字符串内或已折叠区时均会失效。

Ctrl+/ 不是“一键注释代码”,而是“按语法、选中状态和光标位置严格触发的行级切换操作”——它不识别代码块,也不自动包裹,用错场景反而会破坏缩进或 JSX 结构。
Ctrl+/ 没反应?先看右下角语法名和输入法
Sublime 的 toggle_comment 命令根本不会执行,如果右下角显示 Plain Text 或 Unsupported syntax。它不猜你在写什么,只认语法定义。
- 新建未保存文件默认是
Plain Text,点右下角手动切为Python、JavaScript、Shell-Unix-Generic(适配.sh和.env) - Windows 用户必须切英文输入法——中文输入法下
/键常被系统吞掉,快捷键形同虚设 - 光标落在字符串内、已折叠区域、或当前行已有注释但光标不在行首时,
Ctrl+/默认静默不响应(这是防误操作设计)
Ctrl+/ 到底注释哪几行?选中状态决定一切
它的行为边界非常窄,没有智能推断:
- 未选中任何文本:只处理光标所在整行,哪怕光标停在第 4 个字符,也整行加/删
//或# - 选中多行(含空行、缩进不齐、跨折叠区):对每行开头单独加/删行注释符,不是包裹式块注释
- 选中内容跨缩进层级(如 Python 中只选 if 块中间两行):仍逐行加
#,可能导致缩进错乱或语法错误
遇到格式异常,先按 Ctrl+Shift+P → 输入 Indentation: Reindent Lines 整理再注释。
想用 /* */ 或 包裹?别用 Ctrl+/,改用 Ctrl+Shift+/
Ctrl+Shift+/(Windows/Linux)或 Cmd+Option+/(macOS)调用的是 toggle_block_comment 命令,但它是否生效,完全取决于当前语法是否定义了 blockComment。
- JavaScript 支持
/* */,HTML 支持<!-- -->,但 Python 默认不支持""" """块注释(那是插件或 snippet 提供的) - CSS 文件里
Ctrl+Shift+/常无效——因为多数 CSS 语法包没配置blockComment,得手动改comments配置或装插件 - Vue/JSX 的
<template></template>区域不响应,是因为 HTML 语法作用域未覆盖该 scope,需调整语法高亮配置
自定义注释行为比换快捷键更可靠
快捷键只是入口,真正控制符号和逻辑的是语法包里的 comments 配置。比如让 Vue 的 <script></script> 块支持 /* */,不能只绑快捷键,得编辑对应语法的 comment.tmPreferences,或在用户设置里加 Syntax Specific 规则:
{
"syntax": "Packages/Vue Syntax Highlight/Vue.sublime-syntax",
"settings": {
"comment_start": "/* ",
"comment_end": " */"
}
}真正容易被忽略的是:Sublime 的注释逻辑是“语法驱动”的,不是“文件后缀驱动”的。哪怕你打开的是 script.js,右下角显示 Plain Text,Ctrl+/ 就不会加 //。

















