🦁

WSL+neovimでUnity構文を認識する

2024/10/06に公開

WSL内のnvimからUnityプロジェクトのcsファイルを開くと、Unity特有のクラスや関数が認識できるエラーになる。

これはUnityプロジェクトの.csprojファイル内にWindows形式のパスC:\path\to\Unity\があるためであり、このパスを/mnt/c/path/to/Unityに変更すればUnity特有のクラスや関数も認識できる。
しかしこのファイルはUnity起動時などで自動的に書き換えられてしまうため、簡単に書き換えられるように関数を用意しておくとよい

WSL+Vim+YouCompleteMe+Unityの罠 #Unity - Qiita
を参考にinit.lua(自分はlazyvimを使っているので/lua/config/options.lua)に以下を追記する。

vim.cmd([[
command! ModifyCSProjFile call ModifyCSProjFile()
function! ModifyCSProjFile()
    call system("find . -maxdepth 2 -name \"*.csproj\" | xargs sed -i -e 's/C:/\\/mnt\\/c/g'")
    call system("find . -maxdepth 2 -name \"*.csproj\" | xargs sed -i -e 's/D:/\\/mnt\\/d/g'")
    if exists(':YcmCompleter')
        execute "YcmCompleter ReloadSolution"
    endif
endfunction
]])

nvimでUnityプロジェクトを開いて:ModifyCSProjFileを実行すればUnity関数が認識されるようになる。

Discussion