2017年8月14日月曜日

Windows で terminal と lua を有効にした vim をビルドする

前提環境

  • Windows 10 Pro
  • Msys2 インストール済み
    • 今回の作業はすべて MSYS2 MinGW 64-bit 上で行う

vim.exe, gvim.exe のビルド

if_lua を使いたいので lua のソース準備を含めて実施。 exe 以外は vim80-kaoriya-win64 のものを流用するので、 lua のバージョンは 51 とする。

cd ~/project
git clone -b v5_1_1 https://github.com/lua/lua.git
git clone https://github.com/vim/vim.git
cd vim/src
mingw32-make.exe -f Make_ming.mak GUI=no ARCH=x86-64 TERMINAL=yes LUA=~/project/lua DYNAMIC_LUA=yes LUA_VER=51
mingw32-make.exe -f Make_ming.mak GUI=yes ARCH=x86-64 TERMINAL=yes LUA=~/project/lua DYNAMIC_LUA=yes LUA_VER=51

winpty のビルド

:terminal に必要なバイナリを作成する。

cd ~/project
git clone https://github.com/rprichard/winpty
cd winpty
./configure
make

パッケージング

何をどうすればよいかよくわからないので、 vim80-kaoriya-win64vim.exe, gvim.exe を入れ替えることにする。

cp -a ~/app/vim80-kaoriya-win64 ~/app/vim80-kaoriya-win64-terminal
cp ~/project/vim/src/vim.exe ~/app/vim80-kaoriya-win64-terminal
cp ~/project/vim/src/gvim.exe ~/app/vim80-kaoriya-win64-terminal
cp ~/project/winpty/build/winpty.dll ~/app/vim80-kaoriya-win64-terminal/
cp ~/project/winpty/build/winpty-agent.exe ~/app/vim80-kaoriya-win64-terminal/

これで、 ~/app/vim80-kaoriya-win64-terminalgvim.exe を叩けば terminal 機能付きの gvim が起動する。

以上。

Windows でのビルド方法についての情報

この辺のビルド情報って、ドキュメントのどのあたりに書いてあるんだろうかと思って grep した。 そうすると、 INSTALLpc.txt, terminal.txt に記載されているのが見つかった。なるほど。

INSTALLpc.txt

13. Building with Terminal support
==================================

Vim with Terminal support can be built with either MSVC, MinGW or Cygwin.
This uses the included libvterm and winpty.  No extra header files or
libraries are needed for building.  Just set TERMINAL to yes.

E.g. When using MSVC:

    nmake -f Make_mvc.mak TERMINAL=yes

Or when using MinGW (as one line):

    mingw32-make -f Make_mingw.mak TERMINAL=yes

terminal.txt

MS-Windows ~

On MS-Windows winpty is used to make it possible to run all kind of commands.
Obviously, they must be commands that run in a terminal, not open their own
window.

You need the following two files from winpty:

    winpty.dll
    winpty-agent.exe

You can download them from the following page:

    https://github.com/rprichard/winpty

Just put the files somewhere in your PATH.

参考資料