前言
Mathworks 官方于 2023 年 4 月 27 日发布了MATLAB 插件, 这意味着官方终于提供了一个在 VSCode 中写 MATLAB 的解决方案.事实上,在 VSCode 中写 MATLAB 这种需求早就存在,毕竟大家普遍对 MATLAB 的编辑器和界面颇有微词.介绍的文章也很多,但内容大多老旧.基本上是使用好多个不同插件来分别实现代码补全,代码高亮和运行的功能,配置起来也比较麻烦.本文将基于 Mathworks 官方的插件和 Matlab interactive Terminal 插件来实现在 VSCode 中写 MATLAB 的功能.
MATLAB 插件
事实上其官方介绍已经很详细的说明了功能和使用方法.
实现的功能
根据其说明,MATLAB 插件实现了以下基础功能 (不需要 MATLAB 主体):
- Syntax highlighting
- Code snippets
- Commenting
- Code folding
如果你的电脑上安装了 R2021a 或者更新的版本,则还可以实现以下功能:
- Automatic code completion
- Source code formatting (document formatting)
- Code navigation
- Code analysis, such as continuous code checking and automatic fixes
事实上其提供的功能已经非常完善了,相信会在未来的版本中提供更多的功能.
配置
主要需要配置的地方是路径和 MATLAB 连接时间.
MATLAB 路径
MATLAB 插件需要知道你的 MATLAB 安装在哪里,以便于调用 MATLAB 的引擎.
如果你不记得路径了,可以在 MATLAB 的命令行中输入matlabroot
来查看.
MATLAB 连接时机设置
运行 MATLAB 代码往往需要启动 MATLAB 引擎 (废话), 插件提供了三种连接时机:
- onStart (default) — Start MATLAB as soon as a MATLAB code file is opened.
- onDemand — Start MATLAB only when needed for a given action.
- never — Never start MATLAB.Note: Some functionality is available only with MATLAB running in the background.
基本上选前两项就行了,如果你的电脑配置不高,可以选择 onDemand, 这样就不会在打开 VSCode 时就启动 MATLAB 引擎.
其他配置
MATLAB Index Workspace Setting
和MATLAB Telemetry Setting
保持打开即可.
Matlab interactive Terminal 插件
MATLAB 插件只提供了基础的语法高亮和代码补全,但是并没有提供运行代码的功能.这时候就需要 Matlab interactive Terminal 插件了.
Matlab interactive Terminal 插件基于 MATLAB 自带的python
引擎,可以在 VSCode 中启动一个 MATLAB 的交互式终端,并且可以在其中运行 MATLAB 代码.
配置
python 路径
在拓展设置中找到Matlab Interactive Terminal: Python Path
, 然后输入你的 python 路径即可.
启用 MATLAB 插件
在终端 (管理员) 中运行下列命令:
cd "C:\Program Files\MATLAB\R2021a\extern\engines\python" # 这里是你的MATLAB安装路径
python setup.py install
安装成功后执行以下命令:
python
import matlab.engine
eng = matlab.engine.start_matlab()
没有报错的话就说明安装成功了.
注意事项:
- 你的 python 版本必须是 3.8, 3.9, 3.10 其中之一,否则会报错.(具体参考拓展页面的说明,一般情况下最新的 python 都是不支持的)
- 必须使用管理员权限运行终端,否则第一步无法执行.
使用
设置完成后,重启 VSCode, 在 MATLAB 文件中按下Ctrl+Shift+P
, 输入MATLAB
, 应该会出现三个新的选项:
- Open a MATLAB Terminal (打开 MATLAB 终端)
- Run current MATLAB script (运行当前 MATLAB 脚本)
- Run current selection in MATLAB (运行当前选中的 MATLAB 代码)
为了使用方便可以将这三个命令绑定到快捷键上.
以Run current MATLAB script
为例,在keybindings.json
(快捷键Ctrl+K, Ctrl +S
后点击左上角即可) 中添加如下代码即可:
{
"key": "ctrl+enter",
"command": "matlab.runCurrentScript",
"when": "editorTextFocus && editorLangId == 'matlab'"
}
注意一定要加
editorLangId == 'matlab'
这个条件,否则会导致其他语言的文件也会被执行.