居振梁[暴龙]

居振梁[暴龙]的博客

他的个人主页  他的博客

如虎添翼:Console Matlab Vim完美结合[上]

居振梁[暴龙]  2009年08月24日 星期一 04:00 | 3585次浏览 | 6条评论

由于原理跟edit不同,所以任何模式的matlab都可以使用这个方法来打开vim或是其他的终端程序。其实总是依赖于一个工具或者一种开发方式并不是一个好习惯,多元化嘛……这估计也是一个很难解决的普遍矛盾。
http://code.google.com/p/vimhybridevel

环境:Fedora 10+ Matlab 2008b(7.7)

Matlab的功能繁多自不必多说,但是就是这个显示界面的问题让我这 linux 用户大为扫兴。我曾一度认为linux的java会比 windows的好,毕竟linux和soalris有血缘,而solaris和java又是同一个妈生的。现在发现这个推论非常愚蠢,得出此结论不仅仅是因为我有过linux下java gui 的开发经历,matlab也帮了不少忙。曾有一段时间因为界面是java的而让我直接无视matlab。

另一方面,作为一个不折不扣的 编程 爱 好者,非常感谢matlab提供了强大的编程机制和对外接口,然而matlab本身却没有一个像样的集成开发环境。不过这也不是matlab的错,像我这 连强大如Visual Studio和Eclipse者都能抛弃的人也确实不好伺候。曾有段时间想在matlab之外搭建独立的matlab开发环境,目的就是能像其他语言一 样,在 vim 里 开发和试运行,但是除了得出“这个任务让人吐血”外别无它获,后来有朋友一语道破:如果这件事这么容易做的话,matlab估计就卖不出去了。恍然大悟, 虽然是用的盗版,我还是安份点吧。对了,顺便说一下,“我们生气不是因为有人盗版matlab,而是盗版回去又不肯好好学”。

一直习惯于在终端运行vim,现代linux的桌面效果还是很令我满意的,而matlab跟其他优秀的软件一样,必少不了这样的优点:其功能的提供 往往不依赖于具体的用户接口,管他是GUI的还是CLI的亦或是其他不知名的。所以琢磨着能否直接在终端里方面的使用matlab,于是问题来了……

matlab启动参数里有三个开关可以控制其在终端运行的行为,这里主要关心的是edit命令,也就是调用代码编辑器的命令:
nodesktop:功能正常,但是没有“桌面”(囧,现代版本的matlab主界面真的搞得跟个windows桌面似的),必要时matlab会自己打 开“小窗口”来执行和反馈用户请求,比如帮助窗口,各种图像的输出窗口。这种模式相当于直接将操作系统桌面作为matlab的“主桌面”了,但是它没有“ 在终端运行”的选项,因此代码编辑器还是跟原来的一样。所以不满足我的要求,当然我也不喜欢gvim。

nodisplay:功能正常,但是不仅没有“桌面”,连“小窗口”也没了。此模式相当于远程链接到另一台电脑,然后可视化的东西在本地都看不到。不错的是它到时能够直接调用vim来编辑,只需要事先设置一下EDITOR环境变量就行了(事先不设置也没关系,它会罢 工并提醒你设置的),注意这个 EDITOR不是“桌面”里配置选项配置的那个。所以对于不要求“数据可视化”的情况很好用,当然,你得允许我提更高的要求。

nojvm:这个嘛,连JVM都不启动了,那些可视化的东西自然也就没有了,包括代码编辑器。不过有一点倒是挺让人意外的,如果执行的程序里包含 plot之类的图像绘制函数,一方面会给出warning说某某功能在nojvm时不被支持(外带一堆类似调用堆栈的东西),一方面又跳出个输出绘制结果 的窗口,囧。如果终端就是主要的工作场所,那里面出现一堆的乱七八糟无关的输出信息时总是让人不舒服,这还不是主要问题,关键是没法调出其他操作性窗口, 更不能满足我的要求。

我虽然已经做出决定另外开一个终端来运行vim写程序,还是有点不死心,出于习惯,我在nodesktop模式里输了个“system vim”命令,好家伙,Mission Complete!!!继而又发现,这个system函数很强大,它会把终端交给被传递过去的命令,就如同没有matlab一样(呃,这么说也不对,起码 返回结果是经过matlab处理的,颜色都被忽略了),而vim自己的那个system函数还时不时返回个“failed tty get”,比如top命令。为了方面,我写了matlab个函数, 允许灵活的使用vim和vimdiff,同时在desktop里会切换到gvim(别在 desktop里调用“system vim”,那个gui的命令窗口会被vim的执行体占据,并且导致matlab关不掉,因为无法结束vim进程)。最后啰嗦一下,由于原理跟edit不 同,所以任何模式的matlab都可以使用这个方法来打开vim或是其他的终端程序。选nodesktop模式也好,程序的调式还是离不开自带的那个代码 编辑器的。

其实总是依赖于一个工具或者一种开发方式并不是一个好习惯,多元化嘛……这估计也是一个很难解决的普遍矛盾。

评论

我的评论:

发表评论

请 登录 后发表评论。还没有在Zeuux哲思注册吗?现在 注册 !
電波系山寨文化科学家

回复 電波系山寨文化科学家  2009年08月24日 星期一 20:24

路过帮顶。

5条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号