11
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

vimでMATLABのソースを書く

Posted at

動作環境

まずは動作環境から。
MATLAB R2013a
MacOS yosemite(10.10.5)
vim 7.4.769

少なくとも多少のvim操作、.vimrcの書き方などを知っていることが前提です。

なにがしたいか?

たとえば僕のような、

  • matlabのエディターは編集機能が貧弱だ
  • vimで書くのに慣れている
  • でもvimだと補完弱いのかなぁ?

みたいな人向けの記事です。
やることは、

  1. vimで~.mファイルを開くためMATLABをUTF-8に対応させる
  2. matlab用のvim-pluginを入れる

たったこれだけです。

MATLABのUTF-8化

まずは準備

なんとMATLABはデフォルトだとエンコードがSJISです。
いまどきびっくりです。
僕はvimのエンコードをUTF-8にしているので、vimでソースコードを編集する場合はMATLABのエンコードもUTF-8に設定する必要があります。
ただし、MATLABの「環境設定」ではUTF-8をデフォルトのままでは選べません。
ということで、下記のサイトを参考に強制的にUTF-8に対応させます。

ここで、始める前に注意。

強制UTF-8化をすると、これまで書いたSJISのソースコードが文字化けします。

特に日本語がアウトです。
日本語コメントとかは全滅するでしょう。
スクリプト自体はアルファベットですから、おそらく大丈夫でしょうが。
ですが、始める前はスクリプトのバックアップ、もしくは何らかのエディターでSJISからUTF-8に変換しておくことをおすすめします。

lcdata.xmlを編集

ターミナルを開いて、
cd /Applications/MATLAB_R2013a.app/bin
とディレクトリを移動します。/MATLAB_R2013a.app/の部分は各環境・バージョンに依存するので適宜修正してください。

このフォルダでls -aとやるとlcdata.xmlというファイルとlcdata_utf8.xmlというファイルの両方を見つけることができます。
中身の違いは覗けばすぐわかるかと。

大事なことは、MATLABはlcdata.xmlを読んでエンコードを決めているので、オリジナルのlcdata.xmlの代わりにlcdata_utf8.xmlを読ませれば良い、ということですね。

MATLAB側で読むxmlファイルを切り替えられればいいんでしょうけど、特にそうしたコマンドは見つからないようなので「ファイル名を置きかえる」ことで対応します。

command-line
$ mv lcdata.xml lcdata_sjis.xml
$ ln -s lcdata_utf8.xml lcdata.xml

これでMATLABを再起動させればUTF-8で立ち上がります!

vim側の設定

NeoBundleを使います。
設定に関しては大量に記事が見つかると思うので他を参照してください。

.vimrc
" matlab用syntax
NeoBundle 'lazywei/vim-matlab'

これでmatlabのsyntax highlightに対応してくれます。
MATLAB本体の色分けよりも見やすい気がします笑

ちなみに、MATLABのスクリプトでは行頭に!をつけると、シェルスクリプトが使えます。でもバグも多いようなので微妙かなぁ。
ためしにMATLABのコマンドウィンドウで!vimしたらフリーズしたし... ^^;

ということで、vimでMATLABのソースを書くための設定記事でした!

11
16
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?