vimをwindows上で自前でビルド
色々調べてみたけど、結局はvimのリポジトリの説明が一番充実してるし最新かな?と思う。
大体のことは 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用のインストーラーを取得すること。
上記サイトの 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
追記:
最近ではここも詳しく載ってますね。ありがたい。
追記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