选项卡完成文件名作为MATLAB脚本的参数

时间:2009-12-03 20:45:52

标签: matlab filenames tab-completion

我们都知道MATLAB为在MATLAB函数中用作参数的文件名提供了tab-completion,如importdataimread。我们如何为我们创建的功能做到这一点?

修改

alt text

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

3 个答案:

答案 0 :(得分:22)

警告:此处不支持黑客攻击。

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

<TC>元素中添加此行将获得每个参数的文件名的制表选项。

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:3)

对于Matlab 2016a及以上版本:

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

假设您有一个名为 myFunction.m 的Matlab函数文件。此外,假设此函数需要扩展名为 .ext 的文件作为输入,并且您希望tab-completion显示此函数的所有可能输入选项。然后,将以下内容写入文件并将其命名为 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