Unity の為に使い始めた Xamarin Studio のコード自動整形が駄目過ぎだし、改善の見込みも薄そうなので、Vim で頑張ることにしたメモ。
ちなみに Mac OS X のハナシ。
Mono
brew install mono
Mono 3.0.x 以上が必要。
Vim
brew install vim --with-client-server --with-lua
Vim は Python 2.7.x と Lua を有効に。またクライアントサーバ機能も有効にする。
関連プラグインとしては以下を導入:
プラグイン管理は NeoBundleを使用。
.vimrc
へ一通り設定した後、Vim 起動時、下記コマンドでプラグインが自動インストールされる:
:NeoBundleInstall
omnisharp-vim
インストール
.vimrc
に下記のように記述:
NeoBundleLazy 'OmniSharp/omnisharp-vim', {
\ 'autoload': { 'filetypes': [ 'cs' ] },
\ 'build': {
\ 'windows' : 'msbuild server/OmniSharp.sln',
\ 'mac': 'xbuild server/OmniSharp.sln',
\ 'unix': 'xbuild server/OmniSharp.sln',
\ }
\ }
設定
vim-csharp
C# のシンタックスハイライト。特に設定はしなくてもいいかな。
インストール
.vimrc
に下記のように記述:
NeoBundle 'OrangeT/vim-csharp'
syntastic
コード上のエラーを指摘してもらうのに必要みたい。
インストール
.vimrc
に下記のように記述:
NeoBundle 'scrooloose/syntastic'
設定
.vimrc
へ設定を記述。公式の推奨設定そのまま。
neocomplete.vim
コード補完の要。設定は公式サイトの設定例に OmniSharp の設定を追加しただけ。
インストール
.vimrc
に下記のように記述:
NeoBundle 'Shougo/neocomplete.vim'
設定
.vimrc
へ設定を記述。OmniSharp の Wiki を参考に。
vim-dispatch
OmniSharp のローカルサーバーの起動管理を自動化するのに必要。特に設定はないみたい。
インストール
.vimrc
に下記のように記述:
NeoBundle 'tpope/vim-dispatch'
Automator
Unity から直接コマンドを叩く事は出来ないので、Vim を呼び出すシェルスクリプトを Automator でアプリケーション化して、それを介して Vim を呼び出せるようにする。
#!/bin/bashVIM="${HOME}/.homebrew/bin/vim"CWD=${1%/*}if['VIM'==$(${VIM} --serverlist)]then${VIM} --servername VIM --remote-send "<Esc>:cd \"${CWD}\"<CR>"${VIM} --servername VIM --remote-tab "${1}"fiunset VIM CWD
Unity
ちなみに Unity の API はそのままだとコード補完が効かないので、Xamarin Studio を使用する場合と同じく "Sync MonoDevelop Project" を Unity 側から一度実行しておく。
備考
Automator から直接;
vim --servername VIM
みたいに呼んじゃうと、初回起動時見えないところで Vim サーバーが立ち上がっちゃうので、初回起動は手動でやってる。
AppleScript で Terminal 制御する方が良いかも知れないけど、TotalTerminal だと期待するような動作にならなかったので保留中。