この記事はVim2 Advent Calendar 2020の13日目の記事です。
Unityでは外部のスクリプトエディタを設定できるようになっており、
スクリプトエディタにはVimを指定することもできるようになっています。
この記事ではUnityでVimを使うための設定について紹介します。
2022-08-05追記
執筆当時(2020年12月)の手順だとできなくなっていたので更新。
あわせて数か所調整。以下調整箇所。もしまた動かなくなったりしていた場合はTwitter等からご連絡ください。調整します。
- vim-plugの代わりにvim-jetpackを使うように
- vim-lsp、vim-lsp-settingsの代わりにomnisharp-vimを使うように
セットアップ手順
次の手順でセットアップをしていきます。
今回はWindows11を前提に書いていますが、一部を読み替えれば、他のOSでも同じ設定を行うことが可能です。
手順は1から全て書いていますが、
○○をインストールと書いている箇所については、該当のものを既にインストールしている場合はスキップして問題ありません。また、手順はあくまでも一例なので、必ずしも全てこの手順に沿って行う必要はありません。
1.1、1.2、1.3については、Scoopを使わずに公式サイトからVim、Gitをインストールしても問題ありませんし、
1.3、1.4、1.5、1.6、1.7、3.3は補完が不要であればスキップして問題ありません。
最低限、1.2、2.1、2.2、3.1、3.2のようにして、VimとUnityをインストールし、外部のスクリプトエディタをVimに設定できれば十分です。
まずはVimのセットアップを行います。
1.1. Scoopのインストール
後述するVimとGitをインストールするため、Scoopをインストールします。
Scoopをインストールするには、PowerShellで次のコマンドを実行します。
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
上記のコマンドでエラーが出る場合は、PowerShellの実行ポリシーでスクリプトの実行が制限されている可能性があります。上記のコマンドでエラーが出ていた場合は、次のコマンドを実行して実行ポリシーを変更した後、上記のコマンドを再度実行します。
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
1.2. Vimのインストール
Vim本体をインストールします。
Vim本体をインストールするには、PowerShellで次のコマンドを実行します。
scoop install vim
1.3. Gitのインストール
後述するvim-jetpackを使う上で必要となる、Gitをインストールします。
Gitをインストールするには、PowerShellで次のコマンドを実行します。
scoop install git
1.4. vim-jetpackのインストール
後述するomnisharp-vimをインストールする上で必要となる、vim-jetpackをインストールします。
vim-jetpackをインストールするには、cmdで次のコマンドを実行します。
curl -fLo %USERPROFILE%\vimfiles\pack\jetpack\opt\vim-jetpack\plugin\jetpack.vim --create-dirs https://raw.githubusercontent.com/tani/vim-jetpack/master/plugin/jetpack.vim
1.5. vimrcの設定
後述するomnisharp-vimのインストール、いくつかの設定のため、vimrcを編集します。
WindowsであればC:\Users\ユーザー名\_vimrc
を開き(無ければ作成し)、次のような設定を追記します。
" 補完の設定
" (任意)補完の表示をメニューとポップアップに出す
set completeopt=menu,popup
" vim-jetpackの設定
" call jetpack#begin()~call jetpack#end()にインストールするプラグインを記述する
"
packadd vim-jetpack
call jetpack#begin()
Jetpack 'tani/vim-jetpack', {'opt': 1}
Jetpack 'OmniSharp/omnisharp-vim'
call jetpack#end()
" シンタックスハイライトの有効化
" ファイルタイプの自動検出、ファイルタイプ用のプラグインとインデント設定の自動読み込みの有効化
syntax enable
filetype plugin indent on
1.6. omnisharp-vimのインストール
Omnisharpクライアントのomnisharp-vimをインストールします。
先ほどの手順でvimrcを編集したのち、Vimを再起動して次のExコマンドを実行し、それらをインストールします(インストールするプラグインは先ほどの手順でvimrcに記述しています)。
:JetpackSync
2.1. UnityHubのインストール
Unityの管理をしてくれる、UnityHubをインストールします。
上記のURLからUnityHubをインストールします。
2.2. Unityのインストール
Unity本体をインストールします。
UnityHubを起動したら、インストール→インストールから推奨リリースのバージョンを選択し、次のモジュールを選択し、Unityをインストールします。
- Microsoft Visual Studio Community 2019
- Android Build Support
- iOS Build Support
- Linux Build Support (Mono)
- Mac Build Support (Mono)
- WebGL Build Support
- Windows Build Support (IL2CPP)
- 日本語
これでUnityのプロジェクトを作る前の段階でやる必要のある手順は終わりです。
あとは、プロジェクトを作成したときに次の初回の設定を行うようにします。
3.1. プロジェクトの作成
Unityのプロジェクトを作成します。
UnityHubを起動したら、プロジェクト→新規作成からプロジェクトを作成します。
今回は例として、テンプレートは2D、プロジェクト名はTest、保存先はC:\Users\ユーザー名\Documents\Unity\
を指定します。
3.2. 外部のスクリプトエディタの設定
Unityで使用する外部のスクリプトエディタを設定します。
Unityのプロジェクトを開いたら、編集→環境設定から環境設定を開き、外部エディタ→外部のスクリプトエディタをVimに設定して環境設定を閉じます。
外部エディタの一覧にVimが無ければ、ブラウズからgvim.exeを指定します。gvim.exeはScoopでVimを入れたのであればC:\Users\ユーザー名\scoop\apps\vim\current\gvim.exe
にあります。
3.3. slnファイル、csprojの作成
OmniSharpにプロジェクトを認識させるために必要となる、slnファイル、csprojファイルを作成します。
Unityのプロジェクトを開いたら、アセット→作成→C♯スクリプトから仮のC♯スクリプトを作成し、
編集→環境設定から環境設定を開き、外部エディタ→外部のスクリプトエディタをVisual Studioに設定し、外部エディタ→Regenerate project filesをクリックし、外部エディタ→外部のスクリプトエディタをVimに戻します。そうするとslnファイルとcsprojファイルが生成されます。最初に作成した仮のC♯スクリプトは削除します。
これで必要な作業は終わりです。
最後に確認として、試しに簡単なものを作ってみましょう。
確認
Unityのプロジェクトを開いたら、アセット→作成→C♯スクリプトから、CubeBehaviourという名前のC♯スクリプトを作成します。作成したら、CubeBehaviourを開き、CubeBehaviourを次のように編集します。
ここで、補完を行いたい箇所でCtrl+x→Ctrl+oと入力して補完候補が表示され、Ctrl+nやCtrl+pで補完候補の選択ができれば、適切にセットアップができています。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeBehaviour : MonoBehaviour
{
public float speed = 5f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
var dx = Input.GetAxis("Horizontal") * Time.deltaTime * speed;
var dy = Input.GetAxis("Vertical") * Time.deltaTime * speed;
transform.Translate(dx, dy, 0);
}
}
編集し終えたら、ゲームオブジェクト→3Dオブジェクト→キューブからキューブを追加します。追加したら、CubeBehaviourを追加したキューブにドラッグアンドドロップします。そうしたら、再生を押し、キューブが矢印キーで動くことを確認します。
最後に、ファイル→ビルドして実行→ビルドして実行から実行してみましょう。終了させるためのコードは書いていないので、終了するときはタスクバー等から終了するようにします。
まとめ
このような手順を踏むことで、
Unityの外部スクリプトエディタとしてVimを使うことができるようになります。
おまけ
こうしてせっかくUnityとVimの開発環境を整えたので、
一つVimで反復横跳びをする感じのゲームを作成してみました。
左右移動の練習になる…かもしれない。
Windows版、Mac版、Linux版を置いています。
Unityだとクロスプラットフォームなものが作りやすくて、その辺りとてもいいと思います。