WindowsにNeoVimを導入

Tools
Created by modifying "Neovim-logo.svg" (©Jason Long (Licensed under CC BY 3.0))

VimmerのNeoVim移行話を少し前からチラホラ見かけるようになりました。WindowsでもNeoVimが実用的な水準になりつつあるようだったので、私も試してみることに。現時点のNeoVim(v0.3.1)をWindowsに導入するときの流れ、ポイントをまとめました。

NeoVimをダウンロード

WSL版を使う手もありますが、GUI環境も使いたいので、ここはひとまずネイティブ環境で実行環境を構築します。実行バイナリは以下からダウンロード。

Releases · neovim/neovim

nvim.exeが端末用、nvim-qt.exeがGVim的なものです。

設定ファイルを追加

.vimrcのシンボリックリンクとして作成するとVimと共有できます。

> mklink %USERPROFILE%\AppData\Local\nvim\init.vim %HOMEPATH%\.vimrc
> mklink %USERPROFILE%\AppData\Local\nvim\ginit.vim %HOMEPATH%\.gvimrc

など。

Pythonインターフェイスを有効にする

Pythonで書かれたプラグインを使うためにはPythonインターフェイスを有効にする必要があります。deopleteなどNeoVimの著名なプラグインはPythonを使ったものが多いので有効にしておきます。

Pythonのインストール

Python公式のインストーラーを使用しPythonをインストール。Anaconda(あるいはMinicondaなど)でももちろん大丈夫です。

MSYS2のPythonの利用も試みましたが、こちらはpipでneovimクライアントをインストールするときにエラーが出てしまい、上手くいきませんでした。

init.vimに設定を追加

g:python3_host_progを指定します。Pythonのディレクトリにパスが通っていれば以下の記述でOK。

let g:python3_host_prog = 'python'

NeoVimで:echo has('python3')を実行し「1」が表示されることを確認します。

PythonのNeoVimクライアントをインストール

NeoVimからPythonを呼ぶために用いられます。インストール時にはVisual Studio C++ Builderも必要です(Visual Studioを使っている方なら導入済みかも)。

$ pip install neovim


追記:クライアントの名前が「neovim」から「pynvim」に変わりました。

$ pip uninstall neovim
$ pip install pynvim

nvim-qtの空バッファ対策

v0.3.1のnvim-qtでは> nvim-qt foo.txtのようにファイルを開いた時に、余分な空バッファが前面表示されます。> nvim-qt -- -- foo.txtのように開けば望みの挙動になるのですが、煩わしいのでginit.vimに次のように書いて対処。

if has('nvim') && @% == ""
  bd
endif


追記:NeoVim v0.3.3で空バッファが開かないようになりました。

端末版の色設定

v0.3.1の端末版ではinit.vimで単にcolorschemeを設定しても反映されず、syntaxの色分けも不十分です。

Windowsで快適に使える256色対応のターミナルは少ないですが、set termguicolorsとしてウソ256色対応にしてから、見やすい colorscheme を選択するのが無難かと思います。

if has('win32') && has('nvim')
  set termguicolors
  colorscheme koehler
endif


追記:NeoVim v0.3.3でinit.vimのcolorschemeが反映されるようになりました。

モード移行時のIME切り替え

Kaoriya版GVimにはモード移行時にIMEを自動で切り替えてくれる機能がありますが、nvim-qtでは自前で用意する必要があります。

ノーマルモード移行時にIMEをOFFにするだけなら、こちらのようにAutoHotKeyで対処する方法があります。

私はKaoriya版のようにIME状態を記憶してもらいたかったので、プラグインを作って解決することにしました。

nvim-qt起動時のサイズ

nvim-qtではset linesやset columnsの値が反映されないらしく、そのまま開くと小さいウィンドウサイズで開かれることがあります。

ウィンドウサイズは起動オプションで指定できるので、エイリアスやショートカットでオプションを指定しておきましょう。

> nvim-qt  --qwindowgeometry 1280x720

まとめ

deopleteなどNeoVim向けの素晴らしいプラグインが使えることもあって概ね快適に使えています。現状ではnvim-qtで全角記号の一部が欠けたり、文字化け気味に表示されるなどマルチバイト環境では若干怪しい部分も残っていますが、Vimとの併用あるいは移行を考えても良いところまで来ていると思います。

Oniや他の派生クライアントもあったりで先が楽しみです。

コメント