Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

WSL+Vim+YouCompleteMe+Unityの罠

$
0
0

注意書き

Vim以外のエディタに宗教上の理由で触れません。GUIを使いたくありません。
shellの黒い画面に引きこもって開発したいです。
育ちが悪いので言葉がアレです。用法用量に注意してお読みください。

なんでWSL?

今までMac+UnityでiOSやAndroidの開発してたんですが、仕事がVRになりました。
そう、VRの開発=Windows
Macに親しんだ人ならわかってくれると思うんですがWindowsは開発環境構築がメンドウクサイ…
まだ環境は定まっているわけではないのですが、似たような状況の人はきっといるだろうと思い、
ハマった罠についてアウトプットします。
WindowsでMacみたいな爆速zsh環境がいつか来るといいなぁ…。頑張れWSLもっと頑張れ。

Windows+Unityで生成した.slnをUbuntuのVim+YouCompleteMeで

Unityは.slnをプロジェクトからよしなに生成してくれます。
VisualStudioで読み込んですぐバリバリ開発できますねヤッタァー
あんかクソ重いエディタ使えるか。テキストオブジェクト使えないとか化石

さてWSLをいれてUbuntu内でVim+YouCompleteMeでプロジェクトを読み込んでみましょう。
自前で作成したクラス群は補完がちゃんと効くと思いますが、
UnityEngineなどUnityEngine.dllで定義されてるクラス群が補完できませんね。
諦めてVisualStudioしないでください。訓練されたVimmerは諦めない。

Vim内で:YcmDebugInfoだッ!

上記コマンドを叩くと読み込んだslnのpathやlogのpathが表示されます。
今回見るべきはOmniSharp logfile: /path/to/hogefugapiyo_stdout_hogehoge.logになります。
そのlogを追ってみるとUnityEngine.dllがLoad Errorになっているログが吐かれています。
そのpathを見るにC:\path\to\Unity\になっていませんか?
WSLの設定にもよるかと思うのですが少なくとも自分はUbuntu側からのpathは
/mnt/c/path/to/Unity以下略にUnityEngine.dllがいなければならないはず。
犯人はこいつです。

というわけで修正です。
Unityはよしななタイミングで.slnや.csprojを更新するのでテキトーなFunctionでも作っておいて、
即座に修正できるようにしておきましょう。

command! ModifyCSProjFile :call ModifyCSProjFile()function! ModifyCSProjFile():!find .-maxdepth 2-name "*.csproj"| xargs sed -i-e's/C:/\/mnt\/c/g':!find .-maxdepth 2-name "*.csproj"| xargs sed -i-e's/D:/\/mnt\/d/g':YcmCompleter ReloadSolution
endfunction

あんまりVimScript感がありませんが動いてるからイイノデス。
Vimmerのツッコミ歓迎 :sunglasses:


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>