Keywords: Ubuntu; vim; MATLAB

在一切皆是文件的哲学下,我几乎用 vim 编辑所有东西,包括编程。用 vim 来编 C 和 Fortran 好像理所当然的让人接受。但是即使 MATLAB, 我也用 vim。

注意,我这里说的在 vim 下 code 不是指用 terminal 启动 MATLAB 的 GUI 界面。而是指 command line 环境中的 code 和运行(对于我来说,启动 gui 环境太耗内存太耗电)

 matlab -nodesktop -nosplash -nodisplay -nojvm 

如果你喜欢这样的模式,可以添加 alias 到 .bashrc 文件中

 echo "alias matlab="matlab -nodesktop -nodisplay -nosplash -nojvm" " >> ~/.bashrc 

首先跟随下面步骤完成一些前期工作:

  • 第一步,下载从 MathWorks 网站下载 zip file
  • 第二步,extract  matlab.zip 文件, 可以看到有 compiler, doc, ftplugin, indent, syntax, and license.txt 文件夹/文件。 但是有个问题, 所有这些文件夹中的文件是争对 dos 系统写的,对于 linux 系统有些空格 ^M 的问题,所以先用
     sudo apt-get install dos2unix
    dos2unix matlab.vim

    来进行格式转化。

  • 第三步之安装 help 文件,
     mv $CURRENT/matlab/doc/matlab.txt ~/.vim/doc/ 

    ; 然后打开 vim, 在 vim 的命令行中输入

     :helptags ~/.vim/doc
    :help matlab 

    应该可以显示 matlab 的帮助文件了

  • 第三步之安装 syntax 文件,
     mv $CURRENT/matlab/syntax/matlab.vim  ~/.vim/syntax/
    vim ~/.vimrc

    ;在vimrc 文件中增加一行

     source $VIMRUNTIME/macros/matchit.vim 

    或者

     runtime macros/matchit.vim 

     mv $CURRENT/matlab/ftplugin/matlab.vim  ~/.vim/ftplugin/ 

  • 第三步之安装 indent 文件, 先再次 check ~/.vimrc 文件中是否有 filetype indent on 这一行。然后
     mv $CURRENT/matlab/indent/matlab.vim  ~/.vim/indent/ 
  • 第三步之安装 mlint matlab code checker 文件。 安装完成后,在 vim 命令行中输入
     :make 

    后能进行 matlab 文件的语法及其他的一些检查。

     mv $CURRENT/matlab/compiler/mlint.vim  ~/.vim/compiler/ 

    。 在vimrc 文件中增加一行

     autocmd BufEnter *.m compiler mlint 
  • 第三步之链接 mlint 文件,
     cd /usr/bin/
    sudo ln -s $MATLAB/bin/glnxa64/mlint mlint

    。 再用 vim 打开一个 *.m 文件,在命令行中 输入

     :make 

    来测试。

  • 第四步,在 vim 安装 matlab F5 快捷键,
     au FileType matlab map <buffer> <silent> <F5> :w<CR>:!matlab -nodesktop -nosplash -r "try, run(which('%')), end, quit" <CR><CR>
    au FileType matlab set foldmethod=syntax foldcolumn=2 foldlevel=33

    。By the way, in the Mac OS x, it should be

    au FileType matlab map <buffer> <silent> <F5> :w<CR>:!/Applications/MATLAB_R2014a.app/bin/matlab -nodesktop -nosplash -r "try, run(which('%')), end, quit" <CR><CR>  

    在刚才的文件基础上,按 F5 键来测试下, 应该可以运行了。

通过以上步骤,你就可以在 vim 中写 MATLAB 的代码了,语法高亮,语法检查,缩进对齐和直接运行都没有问题了。

其实还有个更进阶的问题,当你在编写一个很大很大的代码时,你需要在不同 functions 之间来回跳,以方便查看一些具体内容。 就是 control+D 在 MATLAB GUI 里的功能。

vim (hitherto)还不支持这个功能。当然你也可以通过 vim  强大的搜索来跳到你想要的地方。但是,这个问题可以通过 ctags 来解决,请阅读我的另一篇文章。

总之,vim 是一个很酷的东西!希望你也这么认为。

 

 

 

Advertisements

One thought on “如何在 vim 环境中 code 和 run matlab 文件

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s