koturnの日記

転職したい社会人1年生の技術系日記

Windowsでneovimを使う

注意(2016/10/18 追記)

この記事の情報は古くなっているので、新しい記事を参照してください.

前書き

僕自身,neovim自体にはあまり注目していなかった人間であるが,neovimが頑張ってるっぽく,かなり話題を耳にするようになったので,敢えてWindowsでneovimを試すことにした. Windowsで試すきっかけとなったのは,Osaka.vim #6にて,「Windows用のneovimのバイナリって無いんですかね?」と聞いたところ,公式で配布されており,Wikiにもそのことが書かれているという情報をいただいたからである. また,(ゴミ)プラグイン作成者としても,自分のプラグインがneovimで動作するかどうかには興味があった.

ダウンロード

公式でneovim本体のバイナリとQtで実装されたフロントエンドのバイナリが配布されているので,それらをダウンロードしてくる. 公式のWikiに書かれている通り,

  • neovimのAppVeyorからneovim本体のバイナリをダウンロードする(手順は以下とgifアニメを参照).
    • Environment: GENERATOR=Visual Studio 14 Win64, DEPS_PATH=deps64 というラベルをクリック.
    • Artifacts タブをクリック.
    • Neovim.zipをダウンロードし,解凍.
  • Releases · equalsraf/neovim-qtより,neovim-qt.zipをダウンロードし,解凍.
  • Neovim\nvim.exeneovim-qt\ に移動.
  • Neovim\share\nvim\runtime\ 以下にあるファイルを全て neovim-qt\ にぶちまける.

f:id:koturn:20151111194729g:plain

という手順を踏むとよい. あとは,nvim-qt.exe をダブルクリックすると,neovimが起動する. neovim本体である nvim.exe 単体ではneovimを起動できない(Windowsのコンソールをサポートしていない)ので注意すること.

自分でビルドしたい場合

AppVeyorのビルドログを参考にし,以下の順番でコマンドを実行するとよい. ただし,cmake,git,python2.7以上,Visual Studio 2015(2015以上であることが必須)などがインストールされており, cl.exe などのツールがコマンドプロンプトで使用できることが前提である.

:: MSVCでのビルド用のリポジトリ/ブランチを持ってくる
> git clone -q --branch=tb-mingw https://github.com/equalsraf/neovim.git
> git checkout -qf 27f0fa51e9ca886c87159ee1e2c394426d64d128
> cd neovim
:: 環境変数の設定
> set GYP_MSVS_VERSION=2015
> set GENERATOR=Visual Studio 14 Win64
> set DEPS_PATH=deps64
:: サードパーティライブラリのビルド
> mkdir %DEPS_PATH%
> cd %DEPS_PATH%
> cmake -G "%GENERATOR%" ..\third-party\
> set PATH=%PATH%;C:\cygwin64\bin\
> cmake --build .
> cd ..
:: neovimのビルド
> mkdir build
> cd build
> cmake -G "%GENERATOR%" -DCMAKE_BUILD_TYPE=Debug -DDEPS_PREFIX=..\%DEPS_PATH%\usr -DCMAKE_INSTALL_PREFIX=..\INSTALL ..
> cmake --build .

ある程度の開発環境が整っているならば,これでビルドすることができるはずである. 現在のところ,本家のリポジトリを持ってくるわけではないが,将来的には本家から持ってくるようにできるのではないだろうか?

なお,Cygwinバイナリがあるディレクトリのパスを通していると,思わぬところでつまづいたりするので注意すること. neovim-qtのビルドについてはやっていない.(ただのフロントエンドだろうし...)

neovimの設定ファイル

最近になって,Vim%HOME%\_vimrcLinux環境では ~/.vimrc)にあたるファイルは %HOME%\.nvimrc から %XDG_CONFIG_HOME%\nvim\init.vimに,%HOME%\vimfiles\Linux環境では ~/.vim/)にあたるディレクトリは %HOME%\.nvim\ から %XDG_CONFIG_HOME%\nvim\ に変更された.

Linux環境における $XDG_CONFIG_HOME のデフォルトディレクトリ( $XDG_CONFIG_HOME 環境変数が存在しない場合のディレクトリ)は, ~/.config/ であるが,Windowsでは, %AppData% がデフォルトディレクトリとなるらしい(参考). 僕は,Linuxと同様に %XDG_HOME_CONFIG%%AppData% ではなく, %HOME%\.config とした.

既存のVimが用いる .vimrcvimfiles\ をneovimの設定として扱いたい場合,以下のようにしてシンボリックリンクを作成するとよい. (ただし,コマンドプロンプトを管理者権限で起動する必要があるかもしれない. また,環境変数 %XDG_CONFIG_HOME%%HOME% がちゃんと設定され,共に存在することを確認しておこう.)

> mklink /D %XDG_CONFIG_HOME%\nvim %HOME%\vimfiles\
> mklink %HOME%\vimfiles\init.vim %HOME%\_vimrc

init.vimに関しては,シンボリックリンクを作成するのではなく,以下のように記述するのもよいだろう.

source ~/_vimrc

この場合, init.vim にneovimだけで用いる設定を記述することが可能である.

init.vim は新規に書くことが望ましいが,僕は4000行を超える .vimrc を記述しており,neovimの init.vim 用に .vimrc を書き直すようなことはしたくなかったので, .vimrc にneovimの設定も記述することにした. neovimの判定は has('nvim') という式を用いるとよい. neovimを利用している環境であるならば,この式は 1 と評価されるはずである.

注意点

僕が軽くWindowsのneovim + neovim-qtを触って遭遇した問題は,以下のようなものである.

  • フロントエンドであるneovim-qtの問題であると思われるが,文字コードutf-8以外のファイルを開くと文字化けする.
  • neovim側から新規ファイルを作成しようとすると(存在しないファイルを編集しようとすると),"Permission denided" となってしまい,強制的に保存しないといけない(:write! を用いる).
  • コンパイル時にいくつかのオプションを無効化しているので,既存の _vimrc を用いるとエラーが発生した.
    • 例えば,:language コマンドは使用できなかった.
  • neovim本体をフロントエンドであるneovim-qtを用いているので, has('gui_running')0 となることを期待していたが,起動時は 0.起動後は 1 を返却するようになっていた.
  • 当然のことであるが,一部のプラグインはうまく動作しない
    • bling/vim-airline を導入して, :split:vsplit などとして画面を分割すると,盛大にエラー吐いたなど ....

感想

neovimの公式が配布しているWindows向けのバイナリには難が多いと感じた. Linuxで自分でビルドした場合,エンコーディング等の問題もなく,快適に使うことができたので,現状ではWindows対応がややおろそかであると思われる. また, :terminal コマンドが現状では利用できなかったのが少し残念であった.

参考