概要
scalaでコーディングする時はEmacsやIntelliJ IDEAを使う場合が多いようですが、Vim派としてはVim以外での開発はあり得ません。Vimでscalaの補完をする方法はあまりないようですが、ensimeという言語サーバをvimから使う方法があります。しかし、このensimeのセットアップ方法に詰まったりしたので、ここにまとめる。
環境構築
sbtとgitとjdk11のインストール
下記コマンドを管理者権限で実行しPackageManagementからChocolateyGet経由でsbt,git jdk11をインストールします。インストールが終わったら一旦powershellを閉じます。
Set-ExecutionPolicy -Force RemoteSigned
Install-PackageProvider ChocolateyGet -Force
Install-Package sbt -ProviderName ChocolateyGet -Force
Install-Package git -ProviderName ChocolateyGet -Force
Install-Package jdk11 -ProviderName ChocolateyGet -Force
※PackageManagementについてはこちら
https://qiita.com/k_takashi0309/items/3992b8ee68c256202bcf
ensimeのインストール準備
New-Item ~/.sbt/1.0/plugins -ItemType directory
Write-Output"addSbtPlugin(`"org.ensime`" % `"sbt-ensime`" % `"2.5.1`")"| Add-Content ~/.sbt/1.0/plugins/plugins.sbt
上記コマンドを実行するとsbtの設定ファイルにensimeプラグインを追加し、sbtからensimeがインストールできるようになります。
python付きのgvimのインストール
香り屋からgvimをダウンロード・解凍します。
https://www.kaoriya.net/software/vim/
コマンドでダウンロードする場合は下記実行(Cドライブ直下に解凍します)
Invoke-WebRequest -uri https://github.com/koron/vim-kaoriya/releases/download/v8.1.0005-20180520/vim81-kaoriya-win64-8.1.0005-20180520.zip -OutFile $env:temp\gvim.zip
Expand-Archive$env:temp\gvim.zip -DestinationPath C:\
remove-item$env:temp\gvim.zip
python3.5のインストール
gvimはデフォルトではpythonのバージョン3.5を探します。pythonはバージョンやライブラリの環境がインストールするシステムに依存してしまうのでgvim用にembeddable python3.5を入れます。
下記からPython3.5のWindows x86-64 embeddable zip fileをダウンロード・解凍してgvimがあるフォルダに入れときます。
https://www.python.org/downloads/windows/
コマンドでダウンロードする場合は下記実行
Invoke-WebRequest -uri https://www.python.org/ftp/python/3.5.4/python-3.5.4-embed-amd64.zip -OutFile $env:temp\embedpython.zip
Expand-Archive$env:temp\embedpython.zip -DestinationPath C:\vim81-kaoriya-win64\python-3.5.4-embed-amd64
remove-item$env:temp\embedpython.zip
pythonにライブラリをインストール
gvimに入れたembeddable pythonに必要なライブラリを入れます。
python35.zipは解凍してフォルダ名をpython35.zipにする必要があります。
cd C:\vim81-kaoriya-win64\python-3.5.4-embed-amd64
expand-archive python35.zip
remove-item python35.zip
Rename-Item python35 -newname python35.zip
wget"https://bootstrap.pypa.io/get-pip.py" -O "get-pip.py"
.\python.exe get-pip.py
.\python.exe -m pip install websocket-client sexpdata
gvimでembed-pythonのPATHを通す
下記スクリプトを_vimrcに追加する
if has('vim_starting')let $PATH = $VIM ."\\python-3.5.4-embed-amd64;". $VIM ."\\python-3.5.4-embed-amd64\\Scripts;". $PATH
let $PYTHONPATH = $VIM ."\\python-3.5.4-embed-amd64\\Lib\\site-packages;". $VIM ."\\python-3.5.4-embed-amd64"letg:python3_host_prog= $VIM ."\\python-3.5.4-embed-amd64\\python.exe"endif
下記コマンドをpowershellで実行しても追加できます。
$script=@'
if has('vim_starting')
let $PATH = $VIM . "\\python-3.5.4-embed-amd64;" . $VIM . "\\python-3.5.4-embed-amd64\\Scripts;" . $PATH
let $PYTHONPATH = $VIM . "\\python-3.5.4-embed-amd64\\Lib\\site-packages;" . $VIM . "\\python-3.5.4-embed-amd64"
let g:python3_host_prog = $VIM . "\\python-3.5.4-embed-amd64\\python.exe"
endif
'@
$script|Add-Content C:\vim81-kaoriya-win64\_vimrc -NoNewline
ensime-vimのインストール
下記からvimプラグインのensime-vimをインストールします。
https://github.com/ensime/ensime-vim
vimのプラグインマネージャを利用している場合はプラグインマネージャ経由でインストールするとよいでしょう。
私はプラグインマネージャを使わない派なので下記コマンドでインストールします。
New-Item C:\vim81-kaoriya-win64\vimfiles\pack\Mypack\start -ItemType directory
cd C:\vim81-kaoriya-win64\vimfiles\pack\Mypack\start
git clone https://github.com/ensime/ensime-vim.git
neocompleteのインストール
Vimは標準ででオムニ補完ができますが、自動で補完を出すプラグインがあるので、それをいれるとコーディングが捗ります。自動補完のプラグインはいろいろありますが、私はneocompleteを使います。本当は後継のdeopleteを使いたいのですが、何故かめちゃくちゃ補完がでるのが遅いのでまだ移行できてません。
neocompleteは下記からプラグインマネージャ等でインストールしてください。
https://github.com/Shougo/neocomplete.vim.git
プラグインマネージャを使わない派は下記コマンドでインストールしてください。
New-Item C:\vim81-kaoriya-win64\vimfiles\pack\Mypack\start -ItemType directory
cd C:\vim81-kaoriya-win64\vimfiles\pack\Mypack\start
git clone https://github.com/Shougo/neocomplete.vim.git
neoplete用の設定を_vimrcに追加
下記設定を_vimrcに追加します。
NeoCompleteEnable
if!exists('g:neocomplete#force_omni_input_patterns')letg:neocomplete#force_omni_input_patterns ={}endifletg:neocomplete#force_omni_input_patterns.scala ='[^. *\t]\.\w*'
コマンドで追加する場合は下記
$script=@'
NeoCompleteEnable
if !exists('g:neocomplete#force_omni_input_patterns')
let g:neocomplete#force_omni_input_patterns = {}
endif
let g:neocomplete#force_omni_input_patterns.scala = '[^. *\t]\.\w*'
'@
$script|Add-Content C:\vim81-kaoriya-win64\_vimrc -NoNewline
環境変数HOMEを設定する
ensime-vimで実行されるPythonスクリプト内で環境変数HOMEを参照しているので、設定していないとエラーになる。(これの原因に気付くのに数日かかりました)
powershellでは自動変数としてHOMEが定義されているが、Vimから起動されるPythonではHOMEが定義されないようなので、下記コマンドで環境変数HOMEにPowershellの自動変数HOMEを入れておく。
[System.Environment]::SetEnvironmentVariable("HOME", $HOME, "User")
プロジェクト作成
プロジェクトディレクトリの作成
以降プロジェクトの名前をsampleProjectとします。
New-Item sampleProject -ItemType directory
ensimeの初期化
cd directory
write-output c|sbt ensimeConfig
write-output c|sbt ensimeConfigProject
gitの初期化
git init
Write-Output"target/"| Add-Content .gitignore
使ってみて、、、
環境構築大変な割に補完がめっちゃ遅いので使い物にならなかった。