docblockr仅基于正则匹配函数签名生成基础注释模板,不解析ast、不识别类型注解、不处理解构参数/默认值/箭头函数;光标必须位于function/def/class定义行才触发,且依赖正确语法高亮。

DocBlockr 能自动生成基础注释模板,但**不会自动识别类型、不解析 AST、不处理解构/默认值/箭头函数**——你得先写对函数签名,它才可能填对 @param。
光标位置必须精准到函数定义行
插件只在函数/类声明行(function、def、class 所在行)触发,其他位置无效:
- ✅ 正确:光标停在
function getUser(id, options) {这一行任意位置,输入/**后回车 - ❌ 错误:光标在函数体内部、空行中间、或
export default的default上 - ⚠️ 箭头函数
const fn = (a, b) => {}默认不识别,得改写成const fn = function(a, b) {}或手动补全 - ? 检查右下角状态栏语法是否为
JavaScript/PHP/Python,不是Plain Text;否则插件压根不激活
参数提取靠正则,不是靠类型系统
它不读 TypeScript 的 : string、不看 Python 的 -> dict、也不解析 PHP 8 的 string $s 类型声明:
-
function foo({ a }, [b] = [])→ 只提取出{ a }和[b] = [],不会拆解对象/数组 -
def bar(x: int, y: Optional[str] = None)→ 只取x和y,类型提示全丢 -
function baz($id, $with = [])→$with = []被当作文本,参数名变成$with = [],不是$with - ? 补救方式:生成后手动删掉等号部分,或用
Ctrl+Shift+P→DocBlockr: Expand Abbreviation补默认@param模板
自定义模板要改 Settings - User,且不能有语法错误
改了设置没生效?大概率是改错了地方或 JSON 格式崩了:
- 必须进
Preferences → Package Settings → DocBlockr → Settings - User,不是Settings - Default -
"auto_complete": true开启参数自动填充,"jsdoc_enable_types": true仅影响 JS 中@type标签行为,不等于自动加类型 - 想让
@param默认带{string}占位符,得重写jsdocs_function_template字段,不是靠开关 - ⚠️
"jsdoc_parse_param_description": true会尝试从函数体第一行注释(如// id: user ID)提取描述,但准确率低,容易错配,慎开
最常被忽略的点:它不校验语法正确性,只做文本匹配。一个缩进错、少个括号、多层解构,@param 就可能全空或者乱序——别信自动生成,生成完至少扫一眼参数名是否齐全、顺序是否对得上。











