vim是unix下优秀的文本编辑器,在msys2的shell里已经内置了vim。
但是msys2不断更新,然后扔掉旧版本,想使用老版本的软件可能就没地方找了。我想改一下vim7.4的配置,就发现已经无法编译了。
msys2太冷门了,我在网上搜索攻略,终于编译出了vim.exe(32位),gvim.exe,
set PATH=c:\msys64\mingw32\bin;c:\msys64\usr\bin;%PATH%
(在windows下运行需要配置系统环境变量)
make -f Make_ming.mak GUI=no vim.exe
make -f Make_ming.mak GUI=yes gvim.exe
却发现vim.exe可以在windows下的powershell或cmd 环境下很好的运行,但不能在msys2 shell下运行。
要知道msys2官方的vim在cmd和msys2下都可以用的。
这个问题困扰了我几个月,反复研究说明文件,甚至到vim的官网去问,得到的答案就是vim要么编译成unix版本,要么编译成win32版本,而win32版本是不能在msys2的shell下使用的。在vim的说明文档里有:
最后终于研究明白了,分享给大家:
msys2+GCC10,注意不能用mingw32/64的gcc
msys2-runtime
msys2-runtime-devel
patch
autoconf
diffutils
m4
libcrypt-devel(crypt.h)
从msys2的repo下载vim8.2.1895的源码,解压,把/vim/*.patch拷贝到~/vim74/patch下
从vim的镜像网站http://mirror.metrocast.net/vim/unix/
下载vim7.4的源码,解压到~/vim74目录下。
吐槽vim,几千个patch,也不打包,不知道源码是patch到哪里了。
$ cd ~/vim74/src
$ patch -p2 -i ../patch/7.3-cygwin-mouse.patch
$ patch -p2 -i ../patch/7.3-virc.patch
$ patch -p2 -i ../patch/7.3-cygwin-python-dyn.patch
$ patch -p2 -i ../patch/pretend-cygwin-msys.patch
$ patch -p2 -i ../patch/accept-crlf.patch
$ autoconf
注意,由于补丁的路径名是7.3的,会被询问要打补丁的文件名,输入不带路径的就可以了。
./configure \
--prefix=/usr \
--build=${CHOST} \
--with-features=huge \
--with-tlib=ncurses \
--enable-cscope \
--enable-multibyte \
--enable-luainterp=dynamic \
--disable-perlinterp \
--enable-pythoninterp=no \
--enable-python3interp=dynamic \
--enable-rubyinterp=dynamic \
--disable-tclinterp \
--disable-gpm --disable-sysmouse \
--disable-gui --without-x \
CPPFLAGS="${CPPFLAGS} -I/usr/include/ncurses" \
--with-compiledby=""
多字节支持,中文支持,lua/python/perl脚本支持等可以在这里调整。因为perl脚本支持的一个宏在make时会报错搞不定(在vim8.2是没错误的),怀疑我用的GCC10版本太高,已经禁掉了。
$ make -j1 VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/vim${_topver/\.}
会在./src下编译出一个很大的vim.exe
$ ./vim.exe试一下,已经可以看到界面了。
但是不能在windows下点击运行,需要拷贝到/usr/bin下才行,因为需要msys-2.0.dll和msys-ncursesw6.dll两个运行时。
$ make -j1 VIMRCLOC=/etc DESTDIR=~/vim74/src/pkg install
在pkg下会汇集一个准备打包的文件集,注意DESTDIR要使用完整路径。
这里的vim.exe就小多了,只有2M。
$ make install -j1 \
VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim/vim${_topver/\.} \
STRIP=: INSTALL_DATA="cp -L" INSTALL_DATA_R="cp -Lr" \
DESTDIR="${pkgdir}"
配置完整的文件集,vim.exe又回到了巨大的状态,view, rvim之类的倒还是小的,其实都是一个,名字不同而已,改一个回来吧。
然后,就可以打包发布使用了。
ps,哪位大神手里有msys2 gcc5.3或者差不多的工具链,尤其是runtime-devel,求一份~~