docblockr 的 /** 无反应主因是光标位置错误或文件语言未被识别;它仅支持 js、ts、php 等语言,需确保语法正确设置且函数声明规范,复杂解构或箭头函数会导致参数提取失败。

DocBlockr 的 /** 触发为什么没反应
根本原因通常是光标位置不对,或者当前文件没被识别为支持的语言。DocBlockr 默认只在 js、ts、php、java、c 等语言中激活注释生成。
实操建议:
- 把光标放在函数名正前方(不是行首,也不是函数体内),然后敲
/**+Enter - 确认右下角状态栏显示的是
JavaScript而不是Plain Text;如果不是,点一下切换,或用快捷键Ctrl+Shift+P→ 输入Set Syntax: JavaScript - 如果用了
ES6 class语法但没生效,检查是否启用了jsdocs_allow_function_declarations配置(默认false) - 某些插件如
JS Custom会覆盖语法高亮,导致 DocBlockr 失效,可临时禁用测试
生成的参数注释和实际函数签名对不上
DocBlockr 依赖函数定义的文本结构来提取参数名,它不解析 AST,所以写法稍有偏差就会漏掉或错配。
常见错误现象:
-
function foo({ a, b }, [c]) { }→ 只识别出第一个参数arg0,对象解构和数组解构全丢 -
foo = (a, b) => { }箭头函数声明不会被自动捕获(除非你把它写在const foo = function(a, b) { }这种形式里) - 带默认值的参数如
(a = 1, b),DocBlockr 会把= 1当作参数名一部分,生成@param {any} a = 1
解决办法:
- 优先用传统
function声明,避免复杂解构入参 - 手动补全
@param行比依赖自动生成更可靠 - 启用
jsdocs_indentation_spaces配置让缩进对齐,减少手修成本
怎么让 DocBlockr 支持 Vue 或 React 组件的 props 注释
原生 DocBlockr 不识别 props: { } 或 PropTypes 结构,需要额外配置或配合其他插件。
使用场景:
- Vue 单文件组件里写
/**在props:上方,期望生成每个 prop 的@param - React 函数组件上方加
/**,想自动提取PropTypes字段
可行路径:
- 安装
Vue Syntax Highlight插件确保 .vue 文件被正确识别为 Vue 语法 - 在用户设置里添加
"jsdocs_extra_tags": ["@prop", "@event"],方便后续手动补全 - 对 Vue,更推荐用
vue-docgen-cli做构建时提取,而不是靠编辑器实时生成 - React 场景下,
PropTypes是运行时校验,DocBlockr 无法读取其内容;改用 TypeScript 接口定义后,/**+Enter才能准确抓到参数类型
Tab 补全字段时卡住或跳过某些行
这是 DocBlockr 的字段导航逻辑和 Sublime 的 Tab 键绑定冲突导致的,尤其在开启了 auto_complete 或装了 Emmet 时更明显。
性能与兼容性影响:
- 默认按
Tab在@param、@return、@example间跳转,但如果光标停在冒号后面(如@param {string}后),再按Tab就可能触发 Emmet 展开 - Sublime 3.2+ 对
Tab的处理更激进,容易跳过空行或提前结束 - 某些主题会隐藏光标,让你误以为“卡住”,其实是焦点已移到下一行但看不出来
实操建议:
- 把
tab_completion设为false(在 Settings → User 里加这一项),让 Tab 只服务 DocBlockr - 用
Ctrl+Shift+P→DocBlockr: Next Field替代Tab,完全避开冲突 - 如果总在
@returns后跳过,检查是否启用了jsdocs_return_tag,设为false可禁用该字段
真正麻烦的不是怎么触发注释,而是当函数签名本身模糊(比如用 any[] 或 Object)、或跨文件引用类型时,DocBlockr 根本不猜——它只信眼前这行字。这时候手写两行 @param 比调半天配置实在得多。











