21

我们都知道 MATLAB 为在 MATLAB 函数(如importdataimread. 我们如何为我们创建的函数做到这一点?

编辑:

替代文字

显示当前目录中的文件和文件夹。

4

3 回答 3

22

注意:这里不支持黑客攻击。

查看 Matlab 安装中的文件 toolbox\local\TC.xml。这似乎包含选项卡完成的参数类型映射。(我只是通过在 R2009b 中为“imread”grepping Matlab 安装找到了这一点。)

在元素内添加这一行<TC>将使您对其每个参数的文件名进行制表符补全。

<binding name="importdata"        ctype="FILE"/>

这需要就地修改 Matlab 安装。对于 toolbox/local 中的其他一些文件,例如 classpath.txt,您可以通过将修改后的副本放在启动 Matlab 的目录中来覆盖它们,但这对我来说不适用于 TC.xml。

于 2009-12-04T15:24:47.810 回答
5

没有支持将函数添加到参数 Tab 完成的方法,但我使用的一个技巧是放一个“!” 在命令前面,因此它被视为系统命令。然后 Tab 将完成文件路径。一旦我的 MATLAB 命令完成,我回到行首,删除“!” 然后按回车。

于 2009-12-04T12:38:02.750 回答
5

对于 Matlab 2016a 及更高版本:

从 Matlab 2016a 开始,文件 Tc.xml 不再存在。它使用.json(Java Script Object Notation)文件来实现相同的目的。一个简单的例子如下。

假设您有一个名为myFunction.m. 此外,假设此函数需要带有扩展名的文件.ext作为输入,并且您希望制表符补全显示此函数的所有可能输入选项。然后,将以下内容写入文件并命名functionSignatures.json

{
"myFunction":
{
  "inputs":
  [
    {"name":"filename", "kind":"required", "type":"filepath=*.ext" }
  ]
}
}

将此文件放在与myFunction.m文件相同的目录中。现在,重新启动 Matlab。

此文件的作用:在输入函数输入时,按 Tab 键时,您将看到一个带有扩展名的文件列表.ext弹出。如果您希望所有文件都显示在选项卡完成弹出窗口中,而不管其扩展名如何,请在文件中"type":"filepath=*.ext"替换为."type":"filepath"functionSignatures.json

来源https ://www.mathworks.com/matlabcentral/answers/306157-how-to-configure-tab-completion-for-my-function-in-matlab-2016#answer_237857

于 2017-01-19T15:54:58.260 回答