图片缩略图

在Vim中编辑Matlab文件

version 1.4.0.0 (12.6 KB) by 法布里斯
在Vim编辑器中编辑Matlab m文件(支持缩进,语法高亮,标签,mlint)金宝app
4.6
18评级

41下载

更新2010年5月19日

视图版本历史

查看许可协议

包含一组文件,对编辑Matlab文件有用。

包括:
1)语法高亮显示
2)正确的缩进
3)在vim中集成mlint Matlab代码检查器与:make命令
4)正确设置使用火柴。vimscript (extension of the % command to match if/end, for/end,... blocks)
5)标记的支持金宝app
6)帮助文件

引用作为

法布里斯(2021)。在Vim中编辑Matlab文件(//www.tatmou.com/matlabcentral/fileexchange/21798-editing-matlab-files-in-vim), MATLAB中央文件交换。检索

意见及评分(51

吴皓

很好的插件!

克里斯以斯拉

指令不起作用,再多的移动似乎也无法自动加载.vim文件。除了指定指向每个文件的rtp外,我能做的最好的事情就是在.vimrc中查找和获取所有.vim文件的源文件。这当然行得通,但在我看来有点笨拙。

不幸的是,文档有点轻,所以我基本上错过了所有的功能,但我认为缩进……如果有人想要将其移植到Vundle或其他平台,或者编写vim帮助文档,那就太棒了。

埃里希

Anthony,在doc/matlab.txt中查找描述和安装说明。除非您更喜欢使用vim而不是Matlab的内置编辑器,否则您不会发现这些文件有用。

安东尼可以见到效果

我很抱歉……你怎么用这个?你能放一个自述文件吗?

杰里米Rouot

罗斯科的厨师

瓦茨拉夫•Tvrdik
谢谢!我有同样的问题,你和Domenic和你的建议(dos2unix)解决了它。

useruser

添加

对本地sw = 4
对本地ts = 4

在ftplugin / matlab.vim
将模拟matlab文件的默认4个空格制表符

useruser

不错的插件

Jianhui刘

瓦茨拉夫·Tvrdik

Domenic,同样的配置在我的机器上,同样的问题。我相信这是因为文件是在windows上创建的,有DOS的行尾。我通过dos2unix将它们转换为unix(在我的机器上安装这个实用程序),但是还有很多其他方法可以做到这一点。转换错误消失后。

Domenic Del纳米

我在ftplugin/matlab中得到以下错误。当我打开一个文件在vim。

“problem1_error。m”[noeol] 16L, 312C
处理/Users/ddelnano/.vim/ftplugin/matlab.vim时检测到错误:
第5行:
不是一个编辑器命令:^M
第6行:
无效的表达式:exists("b:did_ftplugin")^M
35行:
E171:缺失:endif

我在mac上与最新版本的matlab (R2015a)。有人遇到过这个问题吗?

Bergercookie

伟大的插件。@Igor的解决方案非常有效!

尼科Schlomer

对于switch语句,缩进被打破(' end '没有正确缩进)。

伊戈尔

Mlint在OS x:

去工作

运行:
sudo ln -s /Applications/MATLAB_R2013b。应用程序/ bin / maci64 mlint mlint

根据你的matlab版本选择不同的路径在应用程序。

文森特

要使matchit工作,需要将以下内容添加到.vimrc文件中:

源VIMRUNTIME美元/宏/ matchit.vim

来源:www.vim.org

Ayush

亚历克斯

我有同样的问题,许多其他人似乎,因为我得到一个错误时,ftplugin文件被调用。我该如何解决这个问题?我在哪里添加内容到matchit。vimfile as leptogenesis did to make the code work?

亚历克西斯

leptogenesis

这些插件做得很好!然而,我有和john一样的问题——我必须添加ftplugin/matlab的内容。vim matchit。vimto make the ftplugin work on one of my systems (linux).

然而,更重要的是,mlint集成似乎几乎没有用,因为您必须滚动mlint给出的每一个愚蠢的警告,以找到真正的错误。有没有一种方法使它只报告那些实际上会阻止程序运行的事情?(例如,缺少end语句,括号不匹配等)

约翰

匹配if/end和for/end块对我不起作用。我最后用的是matchit。vimdirectly to set these myself, and getting Matlab syntax highlighting as part of a larger set of syntax highlighting for other languages. The installation instructions should be improved/clarified, and possibly fixed, as they don't work on an out-of-the-box vim install (on Mac Snow Leopard).

谢谢你的回复,罗伯特。我以前试过,没有成功。最终修复它的是运行dos2unix (Ubuntu中的fromdos)。:%s/^M/\r/g在过去一直对我有效,所以这就是为什么我对此感到困惑的原因。谢谢你的帮助。

罗伯特。

本,
看我上面的评论如何修复你得到的错误。

第二件事我说得太早了。要将拼写检查限制在注释中,请打开syntax/matlab。在第57行和第58行末尾添加“,@Spell”。要包含字符串,在第36行末尾添加"contains=@Spell"。

这与内置的cvim文件中使用的方法相同。cpp。vimdoesn't have this though, so I'm not sure why it does this except that it probably loads the c.vim first.

无论如何,这可能是添加到未来版本的好东西。如果有人知道ftplugin/matlab的解。我得到的vim错误,我很乐意听到。

这组文件很棒。Matlab文件在Vim曾经是一个巨大的痛苦。不过我有一些小问题。
首先,当我打开一个。m文件,我得到这个错误:
处理/home/bbergman/.vim/ftplugin/matlab.vim时检测到错误:
第5行:
不是一个编辑器命令:^M
第6行:
无效的表达式:exists("b:did_ftplugin")^M
35行:
E171:缺失:endif

打开ftplugin文件,我没有看到^M字符,所有的endifs似乎都很好。我以前没有使用过ftplugin文件,所以我不知道存在的问题是什么。

我的第二个问题是,拼写和语法检查标志着代码中的各种东西。相反,当我打开c文件时,只有注释和字符串文本会被选中。我忘了对于c/c++,这是不是必须明确做的事情,但在这里也是很好的。

第三,用%匹配if/endif似乎工作得很好,但是%不会像在其他语言中那样循环遍历elseif。这可能是在未来的版本中添加的内容。

再说一遍,这组插件很棒,我只希望我在很久以前就找到了它们。继续努力。

杰夫

谢谢:-)非常方便。有人成功地让mlint:make在OSX下工作吗?

杰夫

罗伯特。

这个很好用,谢谢!给linux用户的一个建议是:

要使mlint工作,请将mlint符号链接到/usr/bin中,以便它位于路径中:

(工作)
sudo ln -s /bin/glnx86/mlint

同时,matlab。vimftplugin is in DOS format, and vim will complain about "^M" characters. To fix this, open matlab.vim using the following command:

/.vim/ftplugin/matlab.vim .vi -U NONE -U NONE ~/.vim/ftplugin/matlab.vim .vi

然后,像这样用换行符替换^M字符:

: % s / [ctrl - v, CTRL-M] / \ r / g

当输入时,如下所示:

: % s / M / ^ \ r / g

保存,退出,一切都应该工作!

法布里斯

卡洛斯,
你说得对,拉链里没有。ctag。我会试着在这周上传一个新版本的软件包(但是你仍然可以在这里下载一个旧版本的zip:http://www.vim.org/scripts/script.php?script_id=2407你可以找到。cags文件)

道格

当我使用:make时,我得到错误"/bin/bash: mlint: command not found"。我已经添加了路径到mlint。我的。bashrc。我还遗漏了什么吗?

同样,上面Bartosz用来执行当前文件的代码也很棒。有人有代码来执行当前选择吗?作为一种替代方法,我编写了一个函数grablines。M,它从现有文件中的一段行创建一个新的(临时的)M文件,然后很容易运行。如果有人感兴趣,我就贴出来。

感谢法布里斯提供的非常有帮助的包裹!

Pankaj Deshpande

我也有兴趣有一种方式使用标签matlab文件和。ctags将是非常有帮助的,但我猜它从。zip文件丢失。谢谢!

卡洛斯

法布里斯,

伟大的代码!我一直在寻找这样的东西。

小问题:我丢失了一些东西,或者在。zip中应该有一个。ctags文件?

谢谢。

乔纳森

这是伟大的。我一直在vim63中使用它,刚刚升级到vim73。它适用于vim73,但是当我尝试新的-p——远程选项卡沉默选项时,匹配不起作用。有人用插件来处理这些选项吗?

法布里斯

对于像a(end)(或a(end+1), a(end-1),…我做了一些关于匹配支持的改进:我很快会上传一个新版本。金宝app

bitozoid

我有一些短语,比如‘a(end)’。在这种情况下,匹配器似乎不起作用。

bitozoid

目前这对我来说是可行的:
——/usr/share/vim/vim72/indent/matlab.vim-orig 2010-05-15 16:07:37.000000000 +0100
+ + + /usr/share/vim/vim72/indent/matlab.Vim 2010-05-15 16:08:09 000000000 +0100
@@ -116,7 +116,7 @@
让curind = curind - &sw
endif
"子函数中没有缩进
- if getline(v:lnum) =~ '^\s*\function\>' && s:function withoutendstatement
+ if getline(plnum) =~ '^\s*\function\>' && s:function withoutendstatement
让curind = curind - &sw
endif
" switch后的第一个case: indent

bitozoid

我得到一个主函数的缩进(没有end)。这是正常行为吗?我能避免吗?

Bartosz

我明白了,把下面的行添加到你的matlab。vim

"使用F5执行正在编辑的文件:
map :w:!matlab -nodesktop -nosplash -r "try, run %, pause, catch, end, quit"

Bartosz

伟大的插件!这正是我要找的东西。
有没有一种方法可以直接从vim运行。m脚本?

大卫

这是一个非常好的插件,Fabrice对任何问题的响应都非常好。我也遇到了同样的问题,即缩进不能在“开箱即用”的情况下工作,同样的解决方法也适用于我。然而,我对缩进代码做了更改,以删除tic;toc;缩进,因为我使用“t=toc;”,它没有被选中。其他的一切都很好。“=G”是我的朋友:)

d c

我非常欣赏。vim插件。不幸的是,它对我并不是很有效。新的搬起来了吗?如果是的话,我会检查并公布我的任何错误。

Arvind Raghavan

我必须在_vimrc中添加以下一行,以使缩进生效(根据提供的安装说明,语法可以“开箱使用”):

文件类型上缩进

有人有这个问题吗,还是我遗漏了什么显而易见的东西?

法布里斯

我对缩进文件进行了增强,以正确缩进一行代码块。我会尽快提供新的版本的文件。

雅罗斯拉夫牛

有人知道我应该把什么脚本添加到"缩进/matlab。vim" file in order to get the following statement (or similar to it) indented correctly:

如果(some_conditional), do_something;结束;

不幸的是,它将“end”匹配到需要“end”的前一个语句(例如“switch”)。但是我喜欢保持我的代码整洁和小巧。

任何建议吗?

克里希纳Sankar米

谢谢法布里斯。非常有用的。
我可以请求一些更多的功能来匹配:除了现有的,支持匹配组,如if/else, else/end, case/case。金宝app

法布里斯

要在windows上安装它:解压缩包并解压到你的vimfiles文件夹(通常是C:\Program Files\Vim\ vimfiles)。

有关安装的更多信息,可以阅读包中提供的matlab.txt文件。

如果我找不到任何。vim文件夹,该如何在windows上安装?

肯林

谢谢分享

Yakun太阳

这是辉煌的。它解决了困扰了我一百万年的。m代码缩进的问题。

: Sood

一个方便的shell代码片段,用于将下载的文件复制到.vim/中适当的目录下
$ CD matlab #下载的目录
$ tar -cf - | (cd ~/.vim;tar xf -)
您可以将这些文件tar到stdout, cd到~/。Vim和untar stdin;没有创建中间文件。

Jørgen Skancke

谢谢你提供的有用的文件。

在emacs中,有一个matlab模式,可以让您在matlab中计算选定的文本(就像在matlab编辑器中一样,便于处理绘图等)。因为这在emacs中是可能的,所以在vim中也应该是可能的。有人知道如何实现吗?

詹姆斯

感谢更新的语法高亮显示。

MATLAB版本兼容性
创建R2008a
与任何版本兼容
平台的兼容性
窗户 macOS Linux
确认

启发:突出Matlab文件在Vim

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!