クマーなひとときv2

雑多なメモ。twitterで書ききれないもの等。

Windowsでneovim環境を作る

Windowsでneovim環境を作る

neovimのバージョンが0.2になり、WindowsがExperimentalでは無くなったので、
試しに導入した時のメモ。

のはずだったが、導入から大分時間が経ってしまったため、手順を忘れぎみ。
家のPCに導入しつつ書く。

前提

  • neovimを導入したいPCは、完全オフライン。
  • オンラインに繋がったPCを使用可能。
  • USBを使ってオフラインのPCにファイルを移動可能。

neovimの準備

公式から拾う。予めビルドされたのが用意されているため、それを使う。

Installing Neovim · neovim/neovim Wiki · GitHub

適当な場所に展開し、起動確認しておく。 以前はnvim-qt.extを別途拾ってくる必要があった気がするけど、同梱されるようになってて少しだけ楽になった。

Pythonの準備

闇の力 を導入予定のため、Python3を使えるようにする必要がある。

パッケージを取得

以前の記事 でPython3は用意しているため、それをそのまま使う。

これ、vim8と同時に動かしたら問題起きたりするのかな。

pythonを使う設定

WindowsではXDG_CONFIG_PATH配下のinit.vimを読み込むらしい。
標準では~/.config/nvimになる模様。そこに配置する。

配置したら、python3の設定を書いておく。

let python3_host_prog="C:/Users/ton/program/vim8/python3/python.exe"

nvim-qtを起動し、:CheckHealthの結果を確認。この時点ではエラーになる。

Python 3 provider (optional)
  - INFO: Using: g:python3_host_prog = "C:/Users/ton/program/vim8/python3/python.exe"
  - INFO: Executable: C:/Users/ton/program/vim8/python3/python.exe
  - ERROR: Command error (4) C:/Users/ton/program/vim8/python3/python.exe -c import neovim; print(neovim.__file__): Traceback (most recent call last):
  - File "<string>", line 1, in <module>
  - ImportError: No module named 'neovim'
  - INFO: Python3 version: 3.5.3
  - INFO: python.exe-neovim version: unable to load neovim Python module
  - ERROR: Neovim Python client is not installed.
    Error: unable to load neovim Python module
    - SUGGESTIONS:
      - Run in shell: pip3 install neovim

neovimでpython3を使うためには、別途モジュールをインストールする必要があるため。

neovim Python client の準備

オンライン、かつ、pipが使えるのであれば、エラーメッセージ通りに pip3 install neovimを実行すれば、すぐ完了。

しかし、今回neovimを入れたいPCはオフラインのため、必要なパッケージを転送し、
手動でインストールする。

pipのインストール

get-pip.pyというスクリプトが用意されているので、ここから、入手する。

次に、以下パッケージを PyPI から取得して、get-pip.pyと同じ場所に配置する。

配置したらpython.exe get-pip.pyを実行し、インストール。

$ python.exe Scripts\get-pip.py
Collecting pip
  Using cached pip-9.0.1-py2.py3-none-any.whl
Collecting setuptools
  Using cached setuptools-36.2.0-py2.py3-none-any.whl
Collecting wheel
  Using cached wheel-0.29.0-py2.py3-none-any.whl
Installing collected packages: pip, setuptools, wheel
Successfully installed pip-9.0.1 setuptools-36.2.0 wheel-0.29.0

これでpipが使える。

Neovim Python Client のインストール

pipと同じように、必要なパッケージを拾ってインストールするだけ。 というわけで、以下パッケージをPyPIから取得し、今度はpip3.exeと同じ場所に配置する。

会社のPCに導入した時は、もっと沢山必要だった気がするんだけど…まぁ必要だったらメッセージ出るので、
都度取得、配置すればいい。

配置したら、pip3.exe install <拾ってきたパッケージ名>を実行し、インストール。

$ pip3 install greenlet-0.4.12-cp35-cp35m-win_amd64.whl msgpack_python-0.4.8-cp35-cp35m-win_amd64.whl pyuv-1.4.0-cp35-cp35m-win_amd64.whl neovim-0.1.13.tar.gz
Processing c:\users\ton\program\vim8\python3\scripts\neovim-0.1.13.tar.gz
Processing c:\users\ton\program\vim8\python3\scripts\greenlet-0.4.12-cp35-cp35m-win_amd64.whl
Processing c:\users\ton\program\vim8\python3\scripts\msgpack_python-0.4.8-cp35-cp35m-win_amd64.whl
Processing c:\users\ton\program\vim8\python3\scripts\pyuv-1.4.0-cp35-cp35m-win_amd64.whl
Building wheels for collected packages: neovim
  Running setup.py bdist_wheel for neovim ... done
  Stored in directory: C:\Users\ton\AppData\Local\pip\Cache\wheels\1f\56\46\0d9eb8b47f52d685aebfd81df5642f44b334e4c671dfb3259b
Successfully built neovim
Installing collected packages: greenlet, msgpack-python, pyuv, neovim
Successfully installed greenlet-0.4.12 msgpack-python-0.4.8 neovim-0.1.13 pyuv-1.4.0

これで Neovim Python Clientが入ったはず。

動作確認

:CheckHealthを実行して、確認する。

Python 3 provider (optional)
  - INFO: Using: g:python3_host_prog = "C:/Users/ton/program/vim8/python3/python.exe"
  - INFO: Executable: C:/Users/ton/program/vim8/python3/python.exe
  - INFO: Python3 version: 3.5.3
  - INFO: python.exe-neovim version: 0.1.13
  - SUCCESS: Latest python.exe-neovim is installed: 0.1.13

やったぜ。

闇の力を手に入れる

dein/denite/deopleteの導入まで。オフライン環境はほんと面倒。

gitの準備

あらかじめ、vimからgitを使えるようにしておくこと。

vimから「:!git」でgitを実行できる状態じゃないと、
dein.vim で正しくランタイムパスが設定されない。

エラーメッセージとか出ないので、PC再設定してる時にはまった。

dein.vim

dein.vim からパッケージをzipで取得。

展開して出来たフォルダを~/.config/nvim/dein/repos/github.com/Shougo/dein.vim/として配置する。

$ ls .config/nvim/dein/repos/github.com/Shougo/
dein.vim  denite.nvim

そして、init.vimに以下を追記。または、ヘルプを参照して書いてもいい。

let $MY_VIMRUNTIME = $HOME.'/.config/nvim'
if &compatible
  set nocompatible
endif
" dein.vimのディレクトリ
let s:dein_dir = expand('$MY_VIMRUNTIME/dein')
" dein.vimのログ
let g:dein#install_log_filename = s:dein_dir . '/dein.log'
" dein.vim 本体
let s:dein_repo_dir = s:dein_dir . '/repos/github.com/Shougo/dein.vim'
" dein.vim がなければ git clone
if &runtimepath !~# '/dein.vim'
  if !isdirectory(s:dein_repo_dir)
    execute '!git clone https://github.com/Shougo/dein.vim' s:dein_repo_dir
  endif
  execute 'set runtimepath^=' . fnamemodify(s:dein_repo_dir, ':p')
endif

neovimを起動して、:call dein#update()が実行できる事を確認する。

denite.nvim

dein.vimと同じように denite.nvim をzipで取得し、dein.vimと同じ場所に配置。

init.vimに以下を追記。

if dein#load_state(s:dein_dir)
  call dein#begin(s:dein_dir)
  call dein#add('Shougo/denite.nvim', {'frozen': '1'})
call dein#end()
call dein#save_state()
endif

neovimを起動後、:UpdateRemotePlugins→再起動→:call dein#update()と実行して、:help deniteでヘルプが見れる事を確認する。

deoplete.nvim

denite.nvimと全く同じ流れ。

deoplete.nvim をzipで取得し、dein.vimと同じ場所に配置。

init.vimのdenite.nvimの行の下に追記。

  call dein#add('Shougo/denite.nvim', {'frozen': '1'})
  call dein#add('Shougo/deoplete.nvim', {'frozen': '1'})

後、以下も適当な場所に追記。

let g:deoplete#enable_at_startup = 1

neovimを起動後、:UpdateRemotePlugins→再起動→:call dein#update()と実行して、:help deopleteで、ヘルプが見れる事を確認する。

最後に

以前触った時よりもサクサク動作するのでいい感じ。

ただし、Windowsではアスタリスクが入力できないという 問題 があるため、まだ常用できない。

BoW環境ではneovimを使っているので、上記バグ?が直ったらWindowsもneovimにしたい、とは思っている。