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

Jac*_*cob 21 matlab filenames tab-completion

我们都知道MATLAB提供标签完成了用作像MATLAB函数参数的文件名importdata,imread.我们如何为我们创建的功能做到这一点?

编辑:

替代文字

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

And*_*nke 22

警告:此处不支持hack.

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

<TC>元素中添加此行将为您的每个参数提供tab-completion文件名.

<binding name="importdata"        ctype="FILE"/>
Run Code Online (Sandbox Code Playgroud)

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

  • 仍然没有官方的"非黑客方式"来做到这一点,但是请看这里(http://undocumentedmatlab.com/blog/setting-desktop-tab-completions)稍微不那么强硬的方式(仍然需要写TC访问权限) .xml,不幸的是). (3认同)

Mik*_*atz 5

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


Abh*_*nav 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" }
  ]
}
}
Run Code Online (Sandbox Code Playgroud)

将此文件放在与文件相同的目录中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