MSYS2下混合使用vim与gvim并使用同一套配置文件
在MSYS2/MINGW64下编译gvim
下载安装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/Makeming.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.ZWin32dllw4lib.zip
x84系统下载lua-X.Y.ZWin64dllw4lib.zip
下载后解压至任意目录
在源码目录vim/src/Makeming.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/Makeming.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 <SYMLINKD> 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