实时代码文件格式 (.m)
从 R2025a 开始,实时编辑器支持对实时脚本使用一种新的纯文本实时代码文件格式 (.m) 作为默认二进制实时代码文件格式 (.mlx) 的替代方案。该纯文本格式基于标准 MATLAB® 代码文件格式 (.m) 并支持所有实时编辑器功能,包括输出、格式化文本、交互式控件和任务。以此格式保存的实时脚本在实时编辑器中打开,其行为像其他实时脚本一样。

纯文本实时代码文件格式 (.m) 的好处
使用新的纯文本实时代码文件格式保存实时脚本有以下优势:
文件可在外部代码编辑器中打开 - 您可以在任何支持纯文本文件的外部文本或代码编辑器中打开使用纯文本实时代码文件格式保存的实时脚本。
提升了透明度 - 使用纯文本文件实时代码文件格式保存的文件不会引发安全性方面的担忧。唯一可能的例外是,如果实时脚本中包含图像和绘图,这些图像和绘图以 Base64(ASCII 二进制)字符串的形式保存在纯文本文件中。
与源代码管理工具的集成更好 - 您可以使用外部源代码管理工具,对使用纯文本实时代码格式保存的实时脚本进行比较和合并。
将实时脚本另存为纯文本
要使用纯文本实时代码文件格式 (.m) 保存实时脚本,请执行以下操作:
转至实时编辑器选项卡,在文件部分中,选择保存 > 另存为。
输入实时脚本的名称。如果您在使用纯文本实时代码文件格式保存现有实时脚本,请输入与原始文件名不同的名称以避免遮蔽问题。
选择 MATLAB 实时代码文件(UTF-8) (*.m) 作为保存类型。
点击保存。
默认情况下,使用纯文本实时代码文件格式 (.m) 保存的实时脚本在实时编辑器中打开。要在编辑器中以纯文本方式打开文件,请在“文件”面板中右键点击文件并选择以文本方式打开。
注意
以纯文本方式编辑实时脚本可能导致无法在实时编辑器中正确打开它。
更改默认实时脚本文件格式
默认情况下,新实时脚本使用二进制实时代码文件格式 (.mlx) 保存。要使纯文本实时代码文件格式成为实时脚本的默认文件格式,请转至主页选项卡,在环境部分中,点击 设置。选择 MATLAB > 编辑器/调试器,在实时脚本格式部分中,选择 M 作为默认实时脚本文件格式。
纯文本实时代码文件的结构
实时编辑器使用自定义标记将格式化文本、生成的输出、交互式控件和任务保存为纯文本。实时编辑器将自定义标记保存在实时脚本文件内的两个位置:
与代码一起作为行内标记保存
在文件底部的附录中保存
例如,假设您有使用纯文本实时代码文件格式保存的实时脚本 fahrenheitconverter.m。默认情况下,当您打开 fahrenheitconverter.m 时,文件在实时编辑器中打开。要在编辑器中以纯文本方式打开 fahrenheitconverter.m,请在“文件”面板中右键点击文件并选择以文本方式打开。
请注意,在实时编辑器和编辑器中,第一个代码行的行号都是 3。原因是在使用纯文本实时代码文件格式保存的实时脚本中,每行文本在保存的文件中占用一个或多个代码行。此外,因为文本行在文件中保存为代码注释,不支持在跨多个代码行的语句之间插入文本。

行内标记
实时编辑器使用行内标记保存文本项,例如格式化文本、表、方程和超链接。例如,此实时脚本包含标题行和普通文本行的标记。

附录
实时编辑器在文件末尾使用附录来保存无法以行内方式保存的大量数据以及保存未链接到特定行号的文件信息。例如,此实时脚本包含附录,其中包含保存实时脚本当前视图的标记,以及实时脚本创建的两个输出。

引用 ID
对于需要额外标记的功能,实时编辑器使用具有引用 ID 的行内标记在行内保存基本功能信息并链接到附录中的额外标记。在合并包含引用 ID 中差异的实时脚本时,请确保合并结果中的行内引用 ID 和附录中的引用 ID 匹配。

标记详细信息
在使用纯文本实时代码文件格式保存的实时脚本中,实时编辑器将自定义标记保存为注释。通常,实时编辑器使用 Markdown 保存文本项,例如格式化文本、表、图像和超链接,并使用 LaTeX 命令保存方程。
下表提供了有关纯文本实时代码文件格式 (.m) 中使用的自定义标记的详细信息。
| 标记类型 | 标记语法 |
|---|---|
格式化文本 | 文本使用 %[text] This is basic text
%[text] # This is a title
%[text] ## This is a header
%[text] This is **bold**, *italic*, `monospace`, and <u>underlined</u>
%[text]{"align":"center"} This block of text is center aligned
|
目录 | 目录使用 %[text:tableOfContents]{"heading": "Table of Contents"} |
| 代码示例 | 代码示例使用 纯代码示例: %[text] ``` %[text] x = 1; %[text] y = "hello"; %[text] ``` MATLAB 代码示例: %[text] ```matlabCodeExample %[text] x = 1; %[text] y = "hello"; %[text] ``` |
| 表 | 表使用 %[text:table] %[text] | abc | def | %[text] | --- | --- | %[text] | 123 | 456 | %[text:table] |
| 图像 | 图像同时在行内和在附录中保存。 行内语法: %[text] this image:  附录中的语法: %[text:image:imageid]
% data: { ... }
%--- |
| 超链接 | 超链接使用 %[text] web page: [MathWorks Website](https://mathworks.com) %[text] file: [Duck Duck Go](/path/to/file.txt) |
| 方程 | 方程使用 %[text] $x = 4^2${"altText": "equation alt text"} |
| 输出 | 输出使用 行内语法: %[output:outputid] 附录中的语法: %[output:outputid]
% data: { ... }
%--- |
| 控件 | 控件使用 行内语法: %[control:controltype:controlid]{"position":[14,16]}附录中的语法: %[control:controltype:controlid]
% data: { ... }
%--- |
| 实时编辑器任务 | 实时编辑器任务使用 行内语法: %[task:taskid] 附录中的语法: %[task:taskid]
% data: { ... }
%--- |
| 实时脚本视图 | 实时脚本的当前视图使用 %[metadata:view]
% data: {"layout":"inline","rightPanelPercent":40}
%--- |
源代码管理
当使用外部源代码管理工具时,您可以直接从该工具比较和合并使用纯文本实时代码文件格式 (.m) 保存的实时脚本。使用二进制实时代码文件格式 (.mlx) 保存的实时脚本只能使用 MATLAB 比较工具进行比较。
例如,在 GitHub® 中,当您将使用纯文本实时代码文件格式保存的实时脚本添加到存储库时,您可以看到文件的每个修订版本之间的差异。

源代码管理限制和解决方法
一些外部源代码管理工具在文件大小方面存在限制,可能导致无法比较使用纯文本实时代码文件格式保存的实时脚本:
如果文件大小太大,GitLab® 和 GitHub 会抛出错误并且不显示文件中的差异。
Perforce® 尝试显示差异,但如果文件大小太大,可能会变得无响应。为了避免 Perforce 变得无响应,您可以尝试禁用 Show Inline Differences 选项。
要获得最佳结果,请尝试使用 GitHub Desktop 或 Visual Studio Code。您也可以通过禁用将输出保存到文件来减小文件大小。要禁用保存输出,请转到主页选项卡,然后在环境部分点击 设置。选择 MATLAB > 编辑器/调试器 > 保存并在输出保存选项部分中,清除将输出保存到文件。或者,在将文件提交到源代码管理之前清除所有输出。
有关详细信息,请参阅您的源代码管理工具的文档。