Vim/GVimのビルドと実行環境の作成
このページではMinGWでWindows用の Vim/GVimをビルドして、Vim/GVimを実行可能な環境を作成する手順について書かれています。
android用Vimについては以下を参照してください
MinGWのインストール
まずMinGWをインストールします。
最近のVimのソースはmsys2のMinGWを前提にしていて、普通のMinGWではビルドできない事があるのでmsys2をインストールしてください。
使用環境に応じて32bit版か64bit版かを選んでください。
インストールしただけでは起動するだけなので、シェルやコアライブラリをインストールします。
update-core
いったんmsys2のウィンドウ自体を(×ボタンで)終了して再起動。
パッケージマネージャでアップデートします。
pacman -Su
以下のようなメッセージが出た場合は、一旦終了してあらためてアップデートを実行します。
警告: terminate MSYS2 without returning to shell and check for updates again
警告: for example close your terminal window instead of calling exit
ウィンドウ自体を終了した場合はmsys2_shell.cmdでmsys2を起動可能です。
あらためてアップデートしたら終了します。
pacman -Su
exit
次にMinGWをインストールします。
MinGW32
msysディレクトリのmingw32.exeを実行してからインストール
pacman -S mingw-w64-i686-toolchain
MinGW64
msysディレクトリのmingw64.exeを実行してからインストール
pacman -S mingw-w64-x86_64-toolchain
Vimのソースをダウンロード
次にVimのソースをダウンロードします。
Windows用Gitクライアントとして Git for Windows(msysgit)などがあります。
https://git-for-windows.github.io/
ビルド
32bit版
msys2のmingw32.exeを実行してから、Vimのソースのsrcディレクトリへ移動してビルドします。
GVim
cd path/to/vim/src
mingw32-make -f Make_ming.mak GUI=yes ARCH=i686 clean
mingw32-make -f Make_ming.mak GUI=yes ARCH=i686 FEATURES=HUGE
実行ファイルはsrcにあるので適当な場所へコピーします。
cd path/to/vim/src
cp *.exe path/to/target/directory
cp xxd/*.exe path/to/target/directory
GVimExt(Windowへの関連付け)が必要なら以下のファイルをコピーして使用します。
(GVimExtはinfファイルを右クリックしてインストールします)
cd path/to/vim/src
cp GvimExt/*.dll path/to/target/directory/GVimExt
cp GvimExt/*.reg path/to/target/directory/GVimExt
cp GvimExt/*.inf path/to/target/directory/GVimExt
cp GvimExt/*.txt path/to/target/directory/GVimExt
Vim
DOS版も必要ならGUI=no
を指定してビルドします。
cd path/to/vim/src
mingw32-make -f Make_ming.mak GUI=no ARCH=i686 clean
mingw32-make -f Make_ming.mak GUI=no ARCH=i686 FEATURES=HUGE
64bit版
msys2のmingw64.exeを実行してビルドします。
32bit版との違いはARCH=x86-64
を指定するかどうかだけです。
GVim
cd path/to/vim/src
mingw32-make -f Make_ming.mak GUI=yes ARCH=x86-64 clean
mingw32-make -f Make_ming.mak GUI=yes ARCH=x86-64 FEATURES=HUGE
Vim
cd path/to/vim/src
mingw32-make -f Make_ming.mak GUI=no ARCH=x86-64 clean
mingw32-make -f Make_ming.mak GUI=no ARCH=x86-64 FEATURES=HUGE
Windowsから直接ビルド
実際問題としてはMinGWのbinにパスを通せばmsys2のシェルを起動しなくてもビルド可能です。
64bitの場合
set PATH=C:\msys64\mingw64\bin
これを利用してWindows用のバッチファイルを作成すると、msys2を起動すること無くビルドはダブルクリックで行うことが可能になります。
日本語メッセージファイル
メッセージを日本語化するためには vim.moファイルが必要です。
vim.moは /src/po/ja.po を変換して作成します。
poファイルを moファイルに変換するにはhttp://www.poedit.net/のような専用ソフトを使う、python等のスクリプトを使用するなど多くの方法がありますが、どのような方法でも構いません。
例えばPythonをインストールしている場合は msgfmt.pyを利用して以下のように変換可能です。
python msgfmt.py ja.po
msgfmt.pyは tools/i18n/にあるのでパスが通っていない場合は次のように変換します。
c:/python27/python c:/python27/tools/i18n/msgfmt.py ja.po
作成した ja.moは vim.mo にリネームして $VIMRUNTIME/lang/ja/LC_MESSAGES
へコピーします。
詳しくは :help mlang.txtを参照してください。
iconv等のDLLについて
Vimでiconv等を利用するためにはdllが必要です。
dllはビルドに使用したMinGW32またはMinGW64のbinディレクトリからVim/GVimの実行ファイルと同じディレクトリにコピーしてください。
32bit版
- libiconv-2.dll
- libintl-8.dll
64bit版
- libiconv-2.dll
- libintl-8.dll
- libwinpthread-1.dll
パッケージ化
あとは作成したバイナリやライブラリをパッケージ化します。
例えば以下のようにvimフォルダを作成します。
vim
├─vim80
└─vimfiles
vimフォルダには作成した実行ファイルとlibiconvやlibintl等のdllをコピーし、vim80(バージョンによって数値は変更)にはsrc/runtimeの中身をコピーします。
日本語メッセージを使用したい場合はvim.poも vim80/lang/ja/LC_MESSAGES
にコピーします。
通常個人設定ランタイムライブラリはvimfilesから読み出されますが、$HOME
(Vimを起動して:echo $HOME
で確認可能)に_vimrc(.vimrc)とvimfilesフォルダがある場合は$HOME
が優先して参照されます。
あとは設定ファイルの_vimrc(.vimrc)に以下を設定してvimフォルダか$HOME
にコピーしてやればとりあえず使えるようになります。
set nocompatible
set enc=utf-8
set fencs=
ucs-bom,utf-8,iso-2022-jp,euc-jp,cp932,utf-16le,utf-16,default,latin1,utf-8
オプションを変更する
必要に応じて各種オプションを設定するか、makeファイルを書き換えてビルドして下さい。
OLEを無効化したgvim.exeを作成する場合
mingw32-make -f Make_ming.mak GUI=yes OLE=no
Python、Perl、Rubyなどのインターフェイスや各種オプションも変更できます。
各種オプションについては Make_ming.mak を参照して書き換えて下さい。
Perl を有効にしたい場合
コンパイルのオプション指定
mingw32-make -f Make_ming.mak PERL=C:/Perl PERL_VER=516 DYNAMIC_PERL=yes
pathや使用しているバージョンは環境に応じて変更してください。
Python を有効にしたい場合
コンパイルのオプション指定
mingw32-make -f Make_ming.mak PYTHON=C:/Python27 PYTHON_VER=27 DYNAMIC_PYTHON=yes
pathや使用しているバージョンは環境に応じて変更してください。
Pythonのバージョンによってはパッチが必要です。
vim 7.3以降では python2 と python3 の両方のインターフェイスを有効に出来ます。
mingw32-make -f Make_ming.mak PYTHON=C:/Python27 PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON3=C:/Python33 PYTHON3_VER=33 DYNAMIC_PYTHON3=yes
Ruby を有効にしたい場合
Ruby 1.8 の場合
コンパイルのオプション指定
mingw32-make -f Make_ming.mak RUBY=C:/ruby183 RUBY_VER=18 RUBY_VER_LONG=1.8 DYNAMIC_RUBY=yes
Ruby 1.9.3 の場合
コンパイルのオプション指定
mingw32-make -f Make_ming.mak RUBY=C:/ruby193 RUBY_VER=19 RUBY_VER_LONG=1.9.1 DYNAMIC_RUBY=yes
pathや使用しているバージョンは環境に応じて変更してください。
Rubyのバージョンによってはパッチが必要です。
Ruby関係のオプションは互換性のない変更が何度かあったので必ずmakefileのコメントを参照するようにしてください。
ActiveScriptRuby等で dll名が異なる場合はオプション指定を追加しなければいけない場合があります。
RUBY_PLATFORM=i386-mswin32_100 RUBY_INSTALL_NAME=msvcr100-ruby191
config.hでエラーが出る場合
注意 : Ruby対応の Vim/GVimを MinGWでコンパイルしてエラーが出る場合は Rubyの config.hを一時的に書き換える必要が有ります。
コンパイル後は元に戻してかまいません。
Rubyは http://rubyinstaller.org がヘッダを書き換える必要がないので良いかもしれません。
書き換えるファイル
C:\ruby\lib\ruby\1.8\i386-mswin32\config.h
config.h 行頭の三行をコメントアウトします。
改変前
#if _MSC_VER != 1200
#error MSC version unmatch
#endif
改変後
/*#if _MSC_VER != 1200
#error MSC version unmatch
#endif*/