Vim
Unity3D
MonoDevelop

MonoDevelop 6.3とJust Enough ViでVimライクなUnity開発

前置き

「EclipseならVrapper」、「IntelliJならIdeaVim」とIDEはVimな環境にする私。
Unity標準のMonoDevelopにもViモードというのがありますが、Shiftキーが効かないという致命的なバグがあり使い物にならず、
アドインマネージャーのVimAddinは入れるとMonoDevelopがクラッシュし、Unityを再インストールしても治りません。
(ユーザー\AppData内のUnityのデータを片っ端から消したら治りました…)
Visual Studio 2017 はプラグイン入れないといけないのでプロジェクトの他のメンバーに影響がでそうなので飛ばしました。

「UnityでVimって言ったらOmniSharpだよね」が大衆の意見のようですが、
「自分ってVimのフルCUIな画面でずっと開発し続けられるほど意識高くない…」GUIも欲しいのでOmniSharpも断念

で辿り着いたのが MonoDevelop 6.3 と Just Enough Vi を使う方法。
結構手こずったので記事に残そうと思います。
OS:Windows8.1
Unity:5.4.1f1(プロジェクト指定なので古め…

参考&MonoDevelopダウンロード先
https://forum.unity.com/threads/monodevelop-unity-6-x-preview-builds.472058/

注意

  1. MonoDevelop-Unity 6.x Preview Builds は名前の通り正式版ではありません。 デバッグモードでstatic変数の内容が見れないなど挙動が怪しい箇所があります。
  2. DLLの場所を移動したりと結構無理矢理です。
  3. Just Enough Viは":"からの操作がなかったりと、かなり機能は少ないです。名前の通り「これだけで十分」な機能だけを持ってきたようです。使ってみて確かに「これだけあればいっか」って思いました。

MonoDevelop-Unity 6.x Preview Buildsを入れる

下記からWindows用のZipをダウンロードします。
https://forum.unity.com/threads/monodevelop-unity-6-x-preview-builds.472058/
zipを展開する前に右クリック->[プロパティ]->[全般]の下部のブロック解除というのをしないといけないそうです。
image.png

Unityの設定

Unityで[Editor]->[Preference]->[External Tools]->[External Script Editor]に先ほど展開したMonoDevelopのexeを設定。
フォーラムの説明ではこれで完了ですが、
私はUnity上でスクリプトを開くとMonoDevelopが「MonoDevelopo.Projects.MSBUild.MSBUildEvaluationContextが初期化できなかった」という内容のエラーが出てプロジェクトが開けませんでした。
フォーラムでも何人か報告してます。
無題.png

原因はDLLが正しく読み込めなかったからのようです。
無理矢理ですが MonoDevelop\bin\MSBuild 以下のDLLをMonoDevelop.exeと同じディレクトリに入れたら動きました。
言語ごとに分かれてる同名のDLLはjaを移動させてます。
コピーした一覧は下記です。

  • MonoDevelop\bin\MSBuild\dotnet.12.0\Microsoft.Build.Utilities.v12.0.dll
  • MonoDevelop\bin\MSBuild\dotnet.14.0\Microsoft.Build.dll
  • MonoDevelop\bin\MSBuild\dotnet.14.0\Microsoft.Build.Engine.dll
  • MonoDevelop\bin\MSBuild\dotnet.14.0\Microsoft.Build.Framework.dll
  • MonoDevelop\bin\MSBuild\dotnet.14.0\Microsoft.Build.Utilities.Core.dll
  • MonoDevelop\bin\MSBuild\dotnet.12.0\ja\Microsoft.Build.Engine.resources.dll
  • MonoDevelop\bin\MSBuild\dotnet.12.0\ja\Microsoft.Build.resources.dll
  • MonoDevelop\bin\MSBuild\dotnet.12.0\ja\Microsoft.Build.Utilities.v12.0.resources.dll
  • MonoDevelop\bin\MSBuild\dotnet.12.0\Microsoft.Build.dll
  • MonoDevelop\bin\MSBuild\dotnet.12.0\Microsoft.Build.Engine.dll
  • MonoDevelop\bin\MSBuild\dotnet.12.0\Microsoft.Build.Framework.dll

Just Enough Vi の設定

失敗

[Tools]->[Add-in Manager]でVimで検索してインストール ではないのでご注意ください。
上記で入れるとエラーメッセージすらないエラーになります。
image.png

原因不明、Unity向けにビルドされたときの設定が原因でしょうか?
別の方法を探すしかないです。

直接入れる

MonoDevelop Add-in Repositoryからaddinのファイル(mpackファイル)を直接ダウンロードします。
http://addins.monodevelop.com/Project/Index/214

このファイルを直接MonoDevelopで読み込む でもないのでご注意
Add-in Managerでファイルを読み込んでもうんともすんとも言わず、インストールもされません。

mpackファイルは中身はzipなので拡張子をzipにして開きます。
すると下記の二つのファイルがあります。

  • addin.info
  • JustEnoughVi.dll

あとはアドイン置き場 MonoDevelop\Addins ディレクトリ内にJustEnoughViなどの名前のディレクトリを作って上記二つを放り込むだけ...
では足りませんでした
無題.png

やっぱり無理だったんだ!なんてめげずに
素直にエラーメッセージ検索したら早々に下記のサイトがでてきました。
http://chomstudio.sblo.jp/article/173128609.html
上の「ブロック解除」って結構重要なものなんですね。。。
JustEnoughVi.dll も右クリック->[プロパティ]からブロック解除です。

完了

image.png
でました!インストールされてます。
エディタがVim風な操作になります。