# MSYS2下混合使用vim与gvim并使用同一套配置文件 参考:[[:Windows:GNU:Compile_VIM_YouCompleteMe_under_MSYS2|新形势下在MSYS2/Mingw下编译安装VIM的YouCompleteMe插件]] ## 在MSYS2/MINGW64下编译gvim [原文在此](https://www.cnblogs.com/jerehao/p/5537564.html) ## 下载安装MSYS2 在https://msys2.github.io/下载MSYS2,推荐下载x86-64版,此版本内置了MinGW32与MinGW64 安装后首先更新MSYS2系统,顺序执行下列代码(注:每条语句执行完毕后若提示关闭终端,则应关闭终端重新打开,再继续下一跳指令) ``` pacman -Sy pacman pacman -Syu pacman -Su ``` ## 配置编译环境 所需软件:gcc(x64),make(可选,默认有mingw32-make),git MSYS2.exe或MinGW64.exe打开终端执行下列代码安装 `pacman -S mingw-w64-x86_64-gcc make git` ## 获取vim源码 `git clone https://github.com/vim/vim vim` ## 添加python支持 在源码目录vim/src/Make_ming.mak修改添加如下代码($(MSYS2)替换为MSYS2的安装目录如C:/MSYS2) ``` PYTHON=$(MSYS2)/mingw64 PYTHON_HOME=$(MSYS2)/mingw64 PYTHONINC=-I$(MSYS2)/mingw64/include/python2.7 DYNAMIC_PYTHON_DLL=libpython2.7.dll STATIC_STDCPLUS=yes ``` ## 添加lua支持 下载地址:http://luabinaries.sourceforge.net/download.html x86系统下载lua-X.Y.Z_Win32_dllw4_lib.zip x84系统下载lua-X.Y.Z_Win64_dllw4_lib.zip 下载后解压至任意目录 在源码目录vim/src/Make_ming.mak修改添加如下代码(已lua5.3.x为例) ``` LUA=C:/Lua53 LUA_VER=53 DYNAMIC_LUA=yes ``` 然后复制解压出来的lua53.dll文件到windows的系统目录,具体哪个目录依赖于你的vim版本位数和windows版本位数: ``` 32位Windows上编译32位vim: C:\Windows\System32 64位Windows上编译32位vim: C:\Windows\SysWOW64 64位Windows上编译64位vim: C:\Windows\System32 ``` 也可以复制lua53.dll到gvim所在的目录。 ## 编译gvim 阅读vim/src/INSTALLpc.txt来设置makefile文件,MSYS2对应makefile位于vim/src/Make_ming.mak 配置好后,MinGW64.exe打开终端,切换到vim/src目录,执行`$ make -f Make_ming.mak USERNAME=xxx USERDOMAIN=xxx`编译。 ## 配置启动 目标当然是要在'MSYS2/MINGW64'两个环境下都能用。'MINGW64'环境显然是对的,但`MINGW64`环境的几个`dll`在`MSYS2`下时默认访问不到的,可以在`.bashrc`或者`.zshrc`中做如下处理:`alias gvim="PATH=$PATH:/mingw64/bin /d/dev/tools/vim/src/gvim"`,后面只要简单打`gvim`就可以,也可以附加参数。这样还不用操心安装到哪里的问题,一般也不会污染其他地方的环境变量。 ## 加载配置文件 由于'MSYS2/MINGW64'两个环境下都设置了`$HOME`环境变量,这里的.vimrc是自动共享的。但新版的`gvim`会到`~/vimfiles/autoload`目录下**而不是**`vim`默认的` ~/.vim/autoload`下去加载插件。如果复制两份的话显然很多麻烦事,这个问题可以用`Windows 7+`的符号链接来解决“ `mklink /D .vim vimfiles` 然后就多了一个相对连接到`.vim`文件夹的“符号链接”叫`vimfiles`,用`Windows`的`dir`命令可以看到: ``` 2018/10/02 10:13 114 t.hpp 2018/10/02 14:01 vimfiles [.vim] 2018/10/02 15:27 7,205 _viminfo ``` 可以正常cd进去或者直接拿路径访问进去,完全一样。 ## 编写配置文件 gvim跟vim的配置需求略不一样,在`.vimrc`中可以通过`if`来分别配置: ``` if has("gui_running") " set default encoding to utf-8, for YouCompleteMe " vim version works well with the default setting set encoding=utf-8 " set the python interpreter in windows path style let g:ycm_server_python_interpreter="D:/APP/MSYS2x64/mingw64/bin/python2.exe" endif ``` 此外,`gvim`可能经常响起警告音来提示操作无效,这个大部分人会很讨厌,可以这样: ``` if has("gui_running") " Maximize gvim on start "set lines=999 columns=999 " this is for *nix autocmd GUIEnter * simalt ~x " this is for windows " disable error bells set noerrorbells visualbell t_vb= autocmd GUIEnter * set visualbell t_vb= endif ```