Windows下使用Mingw/msys2编译支持Python和Lua的GVIM

    • 准备
    • 一 下载安装msys2
    • 二 下载安装Python
    • 三 下载安装Lua
    • 四 下载编译vim
    • 致谢

〇 准备

首先,Windows下vim想要使用各种插件,需要支持对Python,Lua的支持。
但是,在vim中键入:version 显示
-lua
+python/dyn
+python3/dyn
这说明,不支持lua,支持Python;
比如要是想要使用 neocomplete 插件的话就需要重新编译一个支持lua的vim。

一 下载安装msys2

  1. 为什么要用msys2?
    MSYS2 (Minimal SYStem 2),是作为MinGw的替代者出现的,它移植来自Arch Linux中强大的包管理器:Pacman。
    使用过Arch的同学一定很熟悉,通过pacman来安装其它东西,我们就可以使用Pacman安装MinGw,以及很多依赖项。

  2. 下载msys2
    在官网MSYS2 homepage下载,针对自己系统的安装包,我这里使用了msys2-x86_64-20170918.exe
    安装,默认安装C:/msys64
    Windows下使用Mingw/msys2编译支持Python和Lua的GVIM_第1张图片

  3. 配置更新源
    安装完毕,打开安装目录下 msys2.exe,即打开了一个终端。
    在终端中执行:
    $ pacman --needed -Sy bash pacman pacman-mirrors msys2-runtime
    执行完毕之后,关闭Shell,重新打开。
    $ pacman -Su #更新其它组件到最新..

    在文件浏览器分别打开位于路径C:\msys64\etc\pacman.d下的:
    打开 mirrorlist.mingw32 在第一行加入:
    Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686

    打开 mirrorlist.mingw64 在第一行加入:
    Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64

    打开 mirrorlist.msys在第一行加入:
    Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch
    Windows下使用Mingw/msys2编译支持Python和Lua的GVIM_第2张图片

  4. 安装以下环境

    pacman -Sy
    pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gdb mingw-w64-x86_64-make tmux zsh git mingw64/mingw-w64-x86_64-cmake winpty

    解释:
    1). gcc 编译器,gdb 调试器,make、cmake安装编译工具,zsh Shell,tmux窗口管理程序,git版本控制工具,winpty Windows的类Unix命令行。
    2). mingw-w64相关默认安装/mingw64下,所以在msys2 Shell下默认找不到gcc命令的,我们可以将相关路径添加到诸如/etc/profile,.bashrc和.zshrc这样的文件中,也可以在win下面改Path变量。

二 下载安装Python

默认安装 C:/Python35 目录下; 有时间可以试试Anaconda python;

三 下载安装Lua

可以直接下载lib包, 下载[lua-5.3_Win64_bin.zip](http://sourceforge.net/projects/luabinaries/files/5.3/Executables/lua-5.3_Win64_bin.zip/download) 和 [lua-5.3_Win64_dllw4_lib.zip](http://sourceforge.net/projects/luabinaries/files/5.3/Windows%20Libraries/Dynamic/lua-5.3_Win64_dllw4_lib.zip/download),解压2个包到 C:\Lua ; ![LUA](https://img-blog.csdn.net/20171117113551594?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQWVtb25haXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 可前往查看 http://luabinaries.sourceforge.net/download.html 或者在官网下载[lua-users wiki: Lua Binaries](http://lua-users.org/wiki/LuaBinaries)

四 下载编译vim

  1. 打开64位环境Shell, 在mingw64.exe中键入:
    git clone https://github.com/vim/vim.git
    下载到vim的官方源码;
  2. 进入src源码及准备编译:
    cd vim/src

    复制编译文件 Make_cyg_ming.makcustom.mak, 修改custom.mak文件,定制自己要编译的选项.

    • 修改编译64位vim,
      增加ARCH=x86-64

      
      # FEATURES=[TINY | SMALL | NORMAL | BIG | HUGE]
      
      
      # Set to TINY to make minimal version (few features). FEATURES=HUGE # Set to one of i386, i486, i586, i686 as the minimum target processor. # For amd64/x64 architecture set ARCH=x86-64 . # If not set, it will be automatically detected. (Normally i686 or x86-64.) ARCH=x86-64
    • 修改编译Python3

      
      # Python3 interface:
      
      
      # PYTHON3=[Path to Python3 directory] (Set inside Make_cyg.mak or Make_ming.mak)
      
      
      # DYNAMIC_PYTHON3=yes (to load the Python3 DLL dynamically)
      
      
      # PYTHON3_VER=[Python3 version, eg 31, 32] (default is 35)
      
      
      #ifdef PYTHON3
      
      ifndef PYTHON3
      PYTHON3="C:/Program Files/Python35"   # 这里填自己安装Python的路径,如果有空格,可以用""引起来
      endif
      
      ifndef DYNAMIC_PYTHON3
      DYNAMIC_PYTHON3=yes
      endif
      
      ifndef PYTHON3_VER
      PYTHON3_VER=35
      endif
      
      ifndef DYNAMIC_PYTHON3_DLL
      DYNAMIC_PYTHON3_DLL=python$(PYTHON3_VER).dll
      endif
      ifdef PYTHON3_HOME
      PYTHON3_HOME_DEF=-DPYTHON3_HOME=L\"$(PYTHON3_HOME)\"
      endif
      
      ifeq (no,$(DYNAMIC_PYTHON3))
      PYTHON3LIB=-L$(PYTHON3)/libs -lpython$(PYTHON3_VER)
      endif
      
      ifndef PYTHON3INC
      ifeq ($(CROSS),no)
      PYTHON3INC=-I $(PYTHON3)/include
      else
      PYTHON3INC=-I $(PYTHON3)/win32inc
      endif
      endif
      
      #endif
      
    • 修改编译Lua

      
      # Lua interface:
      
      
      # LUA=[Path to Lua directory] (Set inside Make_cyg.mak or Make_ming.mak)
      
      
      # DYNAMIC_LUA=yes (to load the Lua DLL dynamically)
      
      
      # LUA_VER=[Lua version, eg 51, 52] (default is 53)
      
      
      # ifdef LUA
      
      LUA=C:/lua    #lua路径
      
      #endif
      
      
      ifndef DYNAMIC_LUA
      DYNAMIC_LUA=yes
      endif
      
      ifndef LUA_VER
      LUA_VER=53    # 5253 ,看下载的是哪个版本
      endif
      
      ifeq (no,$(DYNAMIC_LUA))
      LUA_LIB = -L$(LUA)/lib -llua
      endif
      
      
      #endif
      
  3. 开始编译
    运行
mingw32-make.exe -f custom.mak

这里可以通过命令行编译给参数,比如GUI=yes即可编译GVIM;

mingw32-make.exe -f custom.mak GUI=yes FEATURES=HUGE MBYTE=yes IME=yes GIME=yes DYNAMIC_IME=yes  USERNAME=Air USERDOMAIN=v.aemonair@gmail.com ARCH=x86-64 gvim.exe

Windows下使用Mingw/msys2编译支持Python和Lua的GVIM_第3张图片
若有编译失败,或要重新编译,需要先运行 mingw32-make.exe -f custom.mak clean
成功后在 src 文件夹下就有 Gvim.exe 文件了,可以在命令行中键入
$.gvim查看是否启动,并查看是否正常:
:version 是否显示lua及python的支持。
Windows下使用Mingw/msys2编译支持Python和Lua的GVIM_第4张图片
至此,编译好的GVIM就可以使用啦。

最后一步。
在vim根目录下,新建一个文件夹,并把runtime中的所有文件拷贝到新文件夹中:

mkdir -p vim80
cp -a runtime/* vim80
cp -a src/*.exe vim80
cp -a vimtutor.bat vim80
cp -a /c/lua/lua53.dll vim80

然后,就可以将vim80移动到你想要的地方,或者加入PATH中了。

致谢

Maonx - win7上编译安装64位VIM
tracyone - Windows下编译YouCompleteMe流程

你可能感兴趣的:(技能心得)