vimをwindows上で自前でビルド

色々調べてみたけど、結局はvimリポジトリの説明が一番充実してるし最新かな?と思う。

 

github.com

 

大体のことは https://github.com/vim/vim/blob/master/src/INSTALLpc.txt に記載されてるので、それ見ればいいと思う。

 

TERMINALオプション付きでビルド

13項にTERMINALについての記載がある。MSVCだとうまくビルドできなかった。mingw32 を使ってビルドするとうまくいく。例で挙げられているのはgvim.exe 版なので、vim版を作りたいときは、2項のMinGWのセクションを見ながら、やるといい、例にも記載があるが、`mingw32-make -f Make-ming.mak GUI=no vim.exe` で作れる。これにターミナルを追加したければ、`TERMINAL=yes` をオプションに追加するだけだ。

 

ターミナルを追加し、できたexeを起動して、おもむろに `:terminal` としてもターミナルは起動しない。なぜなら、Windows では winpty.dll を内部で使っており、これがないと起動できないからだ。なので、http://vim-jp.org/vimdoc-ja/terminal.html#E946 の MS-WIndows の項目にもあるように、winptyを公式リポジトリから取得してきて、所定のパスに入れなければならない。今回はmigw32で作成しているので、msvc2015のzipの中にあるia32のwinpty.dllを使わせていただく。所定のファイルをビルドしたvim.exe と同じフォルダに置き、wintpy32.dll と名前を変える。これでターミナルが起動できる。

LUA オプション付きでビルド

基本的には、9項 Building with Lua support に記載の通りでいける。

ちょっとはまったのは、前のobjファイルや、vim.exe を削除してなくて、ビルドでこけてた。objファイルはobji686フォルダ以下にできたりしてるので、自分の環境ごとに削除しておくこと。

LUAオプションに指定するディレクトリ名はmingwの場合、'/'を使うか、'\'をエスケープする必要があるようだ。'\'をエスケープせずに指定すると、その文字をエスケープだと認識して、正確にパス指定ができなくなり、ビルド中にヘッダーファイルが見つけられずにこけてしまう。

PERL オプション付きでビルド

`LUA オプション付きでビルド` に記載した内容に気を付けていれば詰まることなくビルドできる。ちなみに、私はActivePerl 5.24 をインストールした。

Perlのインストール先に perlxyy.dll (xはメインバージョン、yyはサブバージョン) があるので、そのファイルをvim.exe のあるディレクトリにコピーしておくこと。

RUBY オプション付きでビルド

これも 気を付けるべきところは `LUA オプション付きでビルド付きでビルド` と同じ。

後は、64bit版RubyInstaller を使っているとちゃんとビルドできないので、32bit版をインストールしておくこと。使用したバージョンは2.3.3

msvcrt-ruby230.dll が無いと使えないので、vim.exe と同じディレクトリにコピーしておこう。

PYTHON3 オプション付きでビルド

ビルドオプションでつまるところはない。ダウンロードモジュールは本家から32bit用のインストーラーを取得すること。

www.python.org

上記サイトの Download Windows x86 executable installer を選択

 

ビルドコマンド

私の環境では以下のコマンドでビルドできた (PYTHON3のオプションのパスはPYTHON3のインストールパスに置き換えること。ビルドコマンドそのままだと動かないので注意)

$ mingw32-make -f Make_ming.mak GUI=yes TERMINAL=yes IME=yes MBYTE=yes ICONV=yes CSCOPE=yes NETBEANS=yes STATIC_STDCPLUS=yes DEBUG=no LUA=d:\\src\\lua53 DYNAMIC_LUA=yes LUA_VER=53 PERL=C:\\Perl DYNAMIC_PERL=yes PERL_VER=524 RUBY=C:/Ruby23 DYNAMIC_RUBY=yes RUBY_VER=23 RUBY_API_VER_LONG=2.3.0 PYTHON3=$LOCALAPPDATA/Programs/Python/Python36-32 DYNAMIC_PYTHON3=yes PYTHON3_VER=36 PYTHON=c:/msys64/mingw32 DYNAMIC_PYTHON=yes PYTHON_VER=27 PYTHON_HOME=c:/msys64/mingw32 PYTHONINC=-Ic:/msys64/mingw32/include/python2.7 DYNAMIC_PYTHON_DLL=libpython2.7.dll gvim.exe

 

追記

最近ではここも詳しく載ってますね。ありがたい。

vim-jp.org

 

追記2 :

New PC 環境になったので、いくつかパスが変わった。あと、色々ダイエットした。

vim.exe

> make -f Make_ming.mak GUI=NO TERMINAL=yes IME=yes MBYTE=yes ICONV=yes CSCOPE=yes NETBEANS=yes STATIC_STDCPLUS=yes DEBUG=no LUA=c:/dev/lua51/src DYNAMIC_LUA=yes LUA_VER=51 PYTHON3=C:/Users/bamch/AppData/Local/Programs/Python/Python37-32 DYNAMIC_PYTHON3=yes PYTHON3_VER=37 vim.exe

 

gvim.exe

> make -f Make_ming.mak TERMINAL=yes IME=yes MBYTE=yes ICONV=yes CSCOPE=yes NETBEANS=yes STATIC_STDCPLUS=yes DEBUG=no LUA=c:/dev/lua51/src DYNAMIC_LUA=yes LUA_VER=51 PYTHON3=C:/Users/bamch/AppData/Local/Programs/Python/Python37-32 DYNAMIC_PYTHON3=yes PYTHON3_VER=37