MATLAB 代码格式化工具 MBeautifier
MATLAB内置的代码格式化实在是太垃圾了,VScode的MATLAB插件所提供的格式化也是一样的鸡肋,它们连最基本的缩进和空格都处理不好, 还是选择一个第三方工具MBeautifier来完成吧。
概述
MBeautifier是一个开源的MATLAB项目,已经几年没更新了,看了一下它的功能比较简单:读取xml配置文件,解析文本,处理缩进和空格等格式化问题。 其实用几个Python脚本也可以达到类似的效果,但是有现成的当然更好,而且用Python去格式化MATLAB代码有点滑稽。
使用
记录一下配置过程:
- 下载项目的压缩包,在本地解压(例如放在MATLAB安装位置附近),例如
D:\ProgramHuge\MATLAB\MBeautifier-master
- 将路径
D:\ProgramHuge\MATLAB\MBeautifier-master
存储到MATLAB的path中 - 修改具体配置,配置文件为
resources\settings\MBeautyConfigurationRules.xml
,配置的修改可以查看README文件,我只修改了一处配置,确保所有的函数都会产生缩进,默认只对嵌套函数产生缩进1
2
3
4<SpecialRule>
<Key>Indentation_Strategy</Key>
<Value>AllFunctions</Value>
</SpecialRule>
可以直接使用命令进行格式化:
MBeautify.formatCurrentEditorPage()
:在MATLAB编辑器的当前活动页面上进行格式化。默认情况下文件不会被保存,会在编辑器中以修改状态保持打开。可以使用MBeautify.formatCurrentEditorPage(true)
选择保存格式化后的文件。MBeautify.formatEditorSelection()
:在MATLAB编辑器的当前活动页面上对选定文本进行格式化。保存机制同上,当前命令对于大文件可以更灵活地处理,但是通常建议使用前者。MBeautify.formatFile(file, outFile)
:对文件进行格式化,并且将格式化后的文件尽可能保存到指定的输出文件。输出文件参数可以与输入文件参数相同。可以缺省第二个参数,此时输入文件被格式化后会在MATLAB编辑器中保持打开且未保存的状态。MBeautify.formatFiles(directory, fileFilter)
:对目录中的多个文件进行格式化,文件将被就地格式化(覆盖)。第一个参数是目录的绝对路径,第二个是用于dir
命令的通配符表达式,用于过滤目标目录中的文件。
可以为这些命令创建快捷方式:
MBeautify.createShortcut('editorpage')
:创建快捷方式来调用MBeautify.formatCurrentEditorPage()
MBeautify.createShortcut('editorselection')
:创建快捷方式来调用MBeautify.formatEditorSelection()
MBeautify.createShortcut('file')
:创建快捷方式来调用MBeautify.formatFile(sourceFile, destFile)
可以使用命令来阻止对某些代码片段的格式化,示例如下 1
2
3
4
5
6a = 1;
% MBeautifierDirective:Format:Off
longVariableName = 'where the assigement is';
aligned = 'with the next assignment';
% MBeautifierDirective:Format:On
someMatrix = [1 2 3];
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment