sublime text 4 必须使用 doxydoxygen 替代已废弃的 docblockr,因其专为 st4 重写、支持 lsp 类型推导;安装后需用 ctrl+alt+d 触发,且仅在正确语法类型和函数定义行生效,模板语法基于 jinja2,与 docblockr 不兼容。

Sublime Text 4 装 DocBlockr 会失败,别硬试
DocBlockr 在 Sublime Text 4 上已明确标记为 unmaintained,直接通过 Package Control 搜索安装大概率不出现,或装上后按 /**+Enter 没反应,控制台报错 AttributeError: 'NoneType' object has no attribute 'groups'。这不是你配置错了,是插件底层调用的 Sublime API 已变更,它没法兼容 ST4 的异步加载和新 view.substr() 行为。
ST4 必须换 DoxyDoxygen,不是可选项
DoxyDoxygen 是 DocBlockr 的实际继承者,专为 ST4 重写,支持 Python/JS/PHP/C++,能对接 LSP(比如 pylsp、typescript-language-server)提取真实类型信息,而不是靠正则硬猜。
- 安装:打开命令面板
Ctrl+Shift+P→Package Control: Install Package→ 搜DoxyDoxygen并安装 - 触发方式:光标放在函数定义行(如
def fetch_user(id: int) -> dict:),按Ctrl+Alt+D(Windows/Linux)或Cmd+Alt+D(macOS) - 注意:
/**+Enter 不再有效;DoxyDoxygen 默认不监听 Enter,避免和 Emmet 等插件冲突
模板语法和变量写法全变了,照搬 DocBlockr 配置必出错
DoxyDoxygen 用 Jinja2 模板引擎,变量和循环语法和 DocBlockr 完全不兼容。把旧配置里的 ${1:description} 或 ${params} 直接粘过去,注释块会渲染为空或报错。
-
@param循环必须写成:{% for param in params %}@param {param.type} {param.name}{% endfor %} - 想让
@return只在有返回值时出现,得加判断:{% if return_type %}@return {return_type}{% endif %} - 解构参数(如
(options = { timeout: 5000 }))要生效,必须在设置里开"js_extract_destructured_params": true
光标位置和文件语法类型决定能不能生成,不是插件问题
即使装对了插件,Ctrl+Alt+D 没反应,90% 是这两个原因:
- 右下角状态栏显示的是
Plain Text,不是JavaScript或Python—— 点它手动切换,或用Ctrl+Shift+P→Set Syntax: JavaScript - 光标没放在函数定义行:不能在函数体内、不能在
export default的default上,必须在function、def、const所在整行任意位置 - 箭头函数
const fn = (a, b) => {}默认不识别;改用const fn = function(a, b) {}或启用jsdocs_allow_function_declarations(DoxyDoxygen 中对应配置项名不同,需查文档)
最常被忽略的是:DoxyDoxygen 的模板里写 {return_type},但函数没标注返回类型(比如 JS 里没 JSDoc @returns,Python 里没 -> str),那一行就彻底消失——不是 bug,是设计如此。想强制显示,得自己加 {% if return_type %}...{% else %}@return void{% endif %}。











