VimmerのNeoVim移行話を少し前からチラホラ見かけるようになりました。WindowsでもNeoVimが実用的な水準になりつつあるようだったので、私も試してみることに。現時点のNeoVim(v0.3.1)をWindowsに導入するときの流れ、ポイントをまとめました。
NeoVimをダウンロード
WSL版を使う手もありますが、GUI環境も使いたいので、ここはひとまずネイティブ環境で実行環境を構築します。実行バイナリは以下からダウンロード。
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との併用あるいは移行を考えても良いところまで来ていると思います。
コメント