VSCode 中 MATLAB 函数注释需使用 KoroFileHeader 插件,因其基于文本匹配而非语言服务,支持 function、classdef 等结构;Document This 不支持 MATLAB。

VSCode 里 MATLAB 函数注释不能靠 Document This
Document This 对 MATLAB 完全不支持 —— 它只识别 JavaScript/TypeScript 的 function、class 等语法节点,而 MATLAB 的 function 关键字在 VS Code 默认语言服务中不被解析为可注释声明。即使装了插件,按 Ctrl+Alt+D 也必然无响应。
真正起作用的是 KoroFileHeader 插件(非官方但维护活跃),它不依赖语言服务,而是基于光标位置 + 行首关键词做文本匹配,对 function、function [out] = name(...)、classdef 等 MATLAB 常见结构有效。
- 必须安装
KoroFileHeader(作者:OBKoro1),不是Document This或Auto Comment Blocks - 不要尝试改
javascript.json或typescript.json里的代码片段 —— 那些对.m文件无效 -
files.associations要确保"*.m": "matlab"已配置,否则 KoroFileHeader 不会激活
配置 fileheader.cursorMode 生成函数级注释
KoroFileHeader 的函数注释靠 fileheader.cursorMode 控制,不是靠 snippet 触发词。它会在光标位于函数定义行时,按快捷键插入预设模板。
在 settings.json 中添加或修改:
{
"fileheader.cursorMode": {
"name": "",
"param": "",
"returns": "",
"example": "",
"description": ""
}
}
-
name对应@name标签,留空则不生成;填${1:函数名}可让光标停在此处手动输入 -
param和returns是核心,建议写成:"param": "@param ${1:输入参数} ${2:参数说明}", "returns": "@return ${3:返回值} ${4:说明}" - 不推荐用
$TM_SELECTED_TEXT自动提取参数名 —— MATLAB 函数签名变体多(如[a,b] = f(x,y)),自动解析极易出错
为什么光标在 function 行按 Ctrl+Alt+T 没反应?
常见卡点不是快捷键冲突,而是上下文未被识别:
- 光标必须严格落在
function关键字**正前方**或**同一行开头**,比如:<cursor>function y = myfunc(x)</cursor>✔️;function y = myfunc(x)<cursor></cursor>❌ - 文件后缀必须是
.m,且右下角状态栏显示语言模式为Matlab(不是Plain Text) - 函数不能嵌套在另一个函数内部(MATLAB 允许,但 KoroFileHeader 不处理嵌套函数)
- 如果用了
localfunctions或anonymous function,KoroFileHeader 不支持 —— 这类函数本身就不该加 JSDoc 风格注释
自定义 MATLAB 专用注释模板(非全局)
全局 fileheader.customMade 是给文件头用的,函数注释走 cursorMode。若想统一风格,可把 MATLAB 常用标签写进 cursorMode:
"fileheader.cursorMode": {
"description": "@brief ${1:简要描述}",
"param": "@param ${2:arg} ${3:说明}",
"returns": "@retval ${4:out} ${5:说明}",
"see": "@see ${6:相关函数}"
}
注意:@retval 是 MATLAB 常用标签(help 和 doc 能识别),别硬套 JS 的 @returns;@brief 比 @description 更贴近 MATLAB Help Browser 的解析习惯。
最后提醒一句:KoroFileHeader 不会自动读取函数签名里的参数名和类型,所有 @param 都得你手动补全 —— 这不是缺陷,是 MATLAB 动态特性决定的底线。别指望它像 TypeScript 那样推断。


















