装对nikhilm版DocBlockr、右下角语法设为JavaScript等支持语言、光标置于函数定义行或其正上方紧邻空行,三者齐备才能使/**+Enter生效。

装 DocBlockr 就够了,不用折腾 Doxygen 或其他插件——它开箱即用、轻量、支持主流语言,且真正“一键”触发(/** + Enter),但必须配对三个条件:装对版本、语法识别正确、光标位置精准。
怎么装 DocBlockr 才不装错旧版
Package Control 里搜 DocBlockr 会出现多个同名插件,90% 的失效源于装错了作者分支。
- 必须用命令面板:
Ctrl+Shift+P(Mac 是Cmd+Shift+P)→ 输入Package Control: Install Package→ 等列表完全加载后再搜DocBlockr - 只认作者是
nikhilm、GitHub 仓库名为sublimetext-docblockr的那个(不是docblockr或docblockr-plus) - ST4 用户强烈建议安装后重启 Sublime Text,否则
docblockr命令可能未注册,/**按Enter完全没反应 - 验证方式:新建
.js文件,写function foo(a, b) {},光标停在函数上方空行,输入/**后按Enter—— 若生成含@param a和@param b的块,说明装对了
为什么 /** + Enter 没反应
不是插件坏了,而是环境没对齐。它不看文件后缀,只依赖右下角显示的语法类型和光标物理位置。
- 右下角必须显示
JavaScript、PHP、Python等支持语言,不能是Plain Text或Unsupported syntax(点右下角手动切换) - 光标必须在函数定义行(如
function bar() {或def baz():)的任意位置,或其正上方**紧邻的空行**;在函数体内部、变量行、已有注释行都不触发 -
Enter是默认触发键,不是Tab;Tab只在注释生成后用于跳字段 - 检查是否有插件劫持
Enter(比如 Emmet),可临时禁用其他插件测试
参数提取靠正则,不是靠 AST
它不解析语法树,也不理解 TypeScript 类型或解构语法,纯文本匹配——这点直接影响生成质量。
-
function foo({ a }, [b] = [])→ 提取参数名是{ a }和[b] = [],不会拆成a和b -
const fn = (a, b) => {}默认不识别,得改写成const fn = function(a, b) {}或手动补全 -
def bar(x: int, y: Optional[str] = None)→ 只取x和y,类型提示全丢 - 想让
@param带类型占位符(如@param {string} id),必须手动修改jsdocs_function_template字段,不是开个开关就行
自定义模板改哪里才生效
改了设置没反应?大概率是改错文件位置或 JSON 格式崩了。
- 必须进
Preferences → Package Settings → DocBlockr → Settings – User(不是Settings – Default) - 常见配置项:
"jsdocs_extra_tags"加作者/时间/@version,"jsdocs_function_description"控制是否生成描述段落 - 所有 JSON 必须严格合法:末尾不能多逗号、引号必须英文、布尔值不能加引号
- 改完保存后,新开一个支持语法的文件测试,不要在已打开的 Plain Text 文件里试
最常被忽略的是光标必须落在“函数定义行正上方紧邻空行”——差一行就不触发,连重装插件都救不回来。别猜,直接把光标挪到那行,再试一次 /** + Enter。

















