ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

VS Code 配置 MATLAB in Ubuntu 18.04:settings.json 与 Code Runner 实战

VS Code 配置 MATLAB in Ubuntu 18.04:settings.json 与 Code Runner 实战 1. Ubuntu 18.04 下 VS Code 跑 MATLAB 脚本卡在哪一步如果你在 Ubuntu 18.04 上写 MATLAB 脚本大概率会遇到一个尴尬局面MATLAB 自带的编辑器启动慢、占内存而 VS Code 轻快好用却不知道怎么把.m文件跑起来。搜「VS Code matlab Ubuntu」出来的教程要么只讲装插件要么 settings.json 片段残缺复制进去报一堆路径错误。这篇就把整条链路走通从插件选择、settings.json 骨架、Code Runner 自定义命令到终端输出验证和常见报错排查全部给可复制的配置。先说清楚这套方案适合谁。你本地已经装了 MATLABR2018a 或相近版本都行日常写的是脚本级.m文件不需要 Simulink 图形建模只想在 VS Code 里编辑、一键运行、看终端输出。这个场景下VS Code Code Runner MATLAB 官方扩展的组合完全够用而且比开完整 IDE 省资源。核心检索词就三个VS Code、MATLAB、Ubuntu 18.04围绕它们把配置讲透。需要提前说明的是MATLAB 本体必须已经正确安装并能从终端调用。判断方法很简单打开终端敲matlab -help如果能看到帮助信息说明环境变量没问题如果提示 command not found那得先把 MATLAB 的 bin 目录加进 PATH这一步不解决后面 VS Code 怎么配都跑不起来。2. 前置准备插件、MATLAB 路径与 TaoToken 接入2.1 两个必装插件在 VS Code 扩展面板里搜两个东西。第一个是Code Runner作者是 Jun Han它负责提供右上角那个三角形运行按钮并且支持自定义每种语言的执行命令。第二个是Matlab Extension Pack这是一个扩展包装完会带上语法高亮、代码片段、linter 等一整套.m文件打开就有颜色不再是白板。装完插件先别急着配确认一下 MATLAB 的真实路径。Ubuntu 18.04 上常见安装位置是/usr/local/MATLAB/R2018a/bin/里面有个matlab可执行文件同级的glnxa64目录里有 linter 相关的东西。你可以用这两条命令确认which matlab ls /usr/local/MATLAB/R2018a/bin/glnxa64 | head第一条输出/usr/local/bin/matlab之类的软链路径第二条能列出glnxa64下的文件说明路径有效。把这两个路径记下来settings.json 里要用。2.2 如果你还想在 VS Code 里调模型辅助写代码写 MATLAB 脚本时经常需要查语法、生成测试数据、解释报错。我平时会在 VS Code 旁边开一个模型对话窗口把报错信息贴进去让它分析。TaoToken 提供统一的 API 接入官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 端点是 https://taotoken.net/api 。如果你打算长期在 VS Code 里做编码和 Agent 类工作可以看 Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 只是临时验证某个模型效果用模型对话 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 就够了。这部分和 MATLAB 配置是两条独立线按需取用。3. settings.json 骨架与 Code Runner 自定义命令3.1 打开 settings.json 的正确姿势不要用图形设置界面一个个点直接编辑 JSON 最快。按CtrlShiftP打开命令面板输入settings.json选中Preferences: Open Settings (JSON)。这样打开的是用户级配置对所有项目生效。如果你只想给当前 MATLAB 项目单独配就选Open Workspace Settings (JSON)。打开后是一个大括号包起来的 JSON。把下面这段合并进去注意 JSON 不允许尾随逗号已有内容别重复键{ matlab.mlintpath: /usr/local/MATLAB/R2018a/bin/glnxa64, matlab.matlabpath: /usr/local/bin/matlab, matlab.linterEncoding: utf8, files.associations: { *.m: matlab }, code-runner.executorMap: { matlab: cd $dir matlab -nosplash -nodesktop -r $fileNameWithoutExt }, code-runner.runInTerminal: true, code-runner.saveFileBeforeRun: true }逐项解释一下。matlab.mlintpath指向 linter 所在目录写错会导致波浪线报错乱飘。matlab.matlabpath是可执行文件路径用which matlab的结果填。matlab.linterEncoding设成 utf8避免中文注释被误判成语法错误。files.associations把.m关联到 matlab 语言模式这样 Code Runner 才知道用哪条命令。code-runner.executorMap是核心cd $dir先切到脚本所在目录-nosplash跳过启动画面-nodesktop不开图形界面-r后面跟不带扩展名的文件名直接执行。runInTerminal设 true输出才会进 VS Code 集成终端方便看结果和报错。saveFileBeforeRun保证运行前自动保存省得改了没存跑的是旧代码。3.2 路径不对时的两种改法如果你 MATLAB 装在别的地方比如/opt/MATLAB/R2020b那就把两处路径都换掉。还有一种情况是which matlab输出的是软链比如/usr/local/bin/matlab这个可以直接用MATLAB 自己会解析到真实安装目录。但mlintpath必须指向真实的glnxa64目录软链不行这点容易踩坑。改完CtrlS保存。如果 JSON 有语法错误VS Code 右下角会标红鼠标悬停能看到具体哪一行按提示修就行。4. 验证请求跑一个脚本看终端输出4.1 写个最小测试脚本新建一个test_run.m内容如下% test_run.m disp(Hello from MATLAB in VS Code); a 1:5; b a.^2; fprintf(平方结果: %s\n, mat2str(b));这段脚本做了三件事打印一行字、生成 1 到 5 的向量、算平方并格式化输出。用它验证运行链路和中文输出是否正常。4.2 用 Code Runner 运行在编辑器里打开这个文件点右上角的三角形按钮或者按CtrlAltN。VS Code 底部会弹出集成终端你应该看到类似这样的输出[Running] cd /home/user/matlab_demo matlab -nosplash -nodesktop -r test_run Hello from MATLAB in VS Code 平方结果: [1 4 9 16 25] [Done] exited with code0 in 3.2 seconds看到exited with code0就说明整条链路通了。如果中文显示成乱码检查matlab.linterEncoding是不是 utf8以及终端本身的编码设置。如果卡在[Running]不动多半是 MATLAB 启动慢第一次运行要等几秒属正常。4.3 验证 linter 是否生效故意写一行错误代码比如x [1 2 3少个右括号保存后看有没有红色波浪线。有波浪线说明mlintpath配对了。如果没反应把鼠标移到问题行看是否提示找不到 mlint那就回去检查路径。5. 本篇常见错排查5.1 command not found: matlab终端里跑matlab提示找不到命令。这是 PATH 没配好和 VS Code 无关。在~/.bashrc末尾加一行export PATH$PATH:/usr/local/MATLAB/R2018a/bin然后source ~/.bashrc生效。注意 Code Runner 用的是登录 shell 还是非登录 shell 会影响 PATH 加载如果 VS Code 里还是找不到把code-runner.executorMap里的matlab换成绝对路径/usr/local/MATLAB/R2018a/bin/matlab最稳妥。5.2 运行后没有输出直接 Done常见原因是-r后面的文件名带了扩展名。matlab -r test_run.m是错的必须写test_run。另外脚本里如果有clear all或close all放在开头一般不影响但如果脚本本身有语法错误MATLAB 会静默退出终端只显示 Done。这时候手动在终端跑一遍matlab -nosplash -nodesktop -r test_run看真实报错。5.3 linter 报一堆莫名其妙的错多半是mlintpath指错了目录或者linterEncoding没设 utf8 导致中文注释被当成非法字符。还有一种情况是 MATLAB 版本和扩展不匹配R2018a 比较老如果扩展更新到很新的版本可能不兼容可以在扩展页面选择安装旧版本。5.4 Code Runner 输出乱码集成终端默认编码可能不是 UTF-8。在 settings.json 里加terminal.integrated.defaultProfile.linux相关配置或者直接在终端里执行export LANGen_US.UTF-8测试。更彻底的办法是把 MATLAB 脚本里的中文输出改成英文排除编码干扰后再逐步加回中文。5.5 想调试而不是运行Code Runner 只负责跑不负责断点调试。如果你需要单步调试得用 MATLAB 官方的 Debugger 配置在.vscode/launch.json里配type: matlab指定matlabpath和程序入口。这是另一条链路本篇聚焦运行验证调试配置可以后续单独展开。6. 把配置固化下来下次直接复用整套配置的核心就三块插件装对、路径填对、executorMap 写对。settings.json 那段可以直接复制到任何一台 Ubuntu 18.04 机器上只需要改两个路径。我建议把这段配置存成一个matlab-settings.json放在 dotfiles 仓库里换机器时直接合并省得重新查路径。如果你在配置过程中遇到模型相关的辅助需求比如让模型帮你解释 MATLAB 报错、生成测试用例可以走 API Keys 页面 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 拿 Key接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 。长期在 VS Code 里做编码和 Agent 工作流的话Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 会更合适。这些和 MATLAB 运行环境互不干扰按自己的实际需要取用即可。最后留一个实用技巧在code-runner.executorMap里给 matlab 命令加上-batch参数R2019a 以后支持可以避免某些版本-r执行完不自动退出的问题。老版本 R2018a 就用-r配合脚本末尾的exit语句效果一样。
返回列表