【Windows下使用Msys2+Gcc编译多环境运行的vim】

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

./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

$ 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,求一份~~

你可能感兴趣的:(Msys2,windows,vim,unix)