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

scala+gvim+windows10で補完ができるようになるまで

$
0
0

概要

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

使ってみて、、、

環境構築大変な割に補完がめっちゃ遅いので使い物にならなかった。


Viewing all articles
Browse latest Browse all 5608

Trending Articles



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