Vim/GVimのビルドと実行環境の作成

このページではMinGWでWindows用の Vim/GVimをビルドして、Vim/GVimを実行可能な環境を作成する手順について書かれています。

android用Vimについては以下を参照してください

android用Vimのビルドと実行環境の作成

MinGWのインストール

まずMinGWをインストールします。

最近のVimのソースはmsys2のMinGWを前提にしていて、普通のMinGWではビルドできない事があるのでmsys2をインストールしてください。

http://msys2.github.io/

使用環境に応じて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のソースをダウンロードします。

https://github.com/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*/