想要玩一下 VimIRC.vim 这款插件,不过这货竟然是 Perl 写的,而我用的 vim 没有加入 Perl 支持,所以想不如试试编译一个支持多种脚本语言的 vim
- Vim版本:7.3.905
- 需要支持的语言:Python2/3, Ruby, Perl, Lua, Tcl
- 编译环境:Cygwin
- 操作系统:64 位的 Windows8
一.准备工作
1.Cygwin
除了默认的组件外,还需要选择以下的包:autobuild,autoconf,automake,binutils,cmake,gcc-core,gcc,gcc-g77,gcc-g++,gcc4-core,gcc4,gcc4-g++,make,makedepend,pkg-config,gcc-mingw-core,gcc-mingw-g++,gdb,最后,因为现在是编译 64 位版本的 vim 而我又不清楚具体需要哪些包,所以直接搜索 64,选择安装所有的搜索结果 XD
2.各种语言的包
我一律选择了 64 位的版本。Python 分别为 2.7.3 跟 3.3.1。Ruby 本来纠结是用 1.9.3 还是 2.0.0 好,本来电脑里因为配置 Octopress 已经安装了 1.9.3 ,可是 RubyInstaller 似乎只有 2.0 有 64 位的版本,又不知道 Octopress 对 2.0 会不会有兼容性问题。最后选择了下 2.0.0 的 zip 包。Perl 5 的实现选用了 ActivePerl,版本为 5.16.3。Lua 到这里下载 lua-5.2.1_Win64_bin.zip 和 lua-5.2.1_Win64_dllw4_lib.zip 这两个文件,解压到同一目录下。
update (20130501):增加对 Tcl 的支持,版本为 ActiveTcl 8.5.13。原本打算用 8.6 的,无奈编译不成功,原因不明。。。
3.VIM 源代码
在这里 ftp://ftp.vim.org/pub/vim/pc/ 下载,当然是选 7.3啦,找到 vim73_46rt.zip,vim73_46src.zip 这两个包,前一个是运行时文件后一个是源代码,从 7.3 开始语言文件已经打包进了runtime里。然后再到这里 ftp://ftp.vim.org/pub/vim/patches/7.3/ 下载补丁。
不过这些补丁实在太多了(911 个!),下载起来实在有点麻烦。最开始想到用 Firefox的DownThemAll 扩展,不过不知为什么下载下来的文件名开头都多了个 2.3(记不太清,反正就是多了几个数字,不过现在想想其实也没什么影响 ←_←)。然后又想到在资源管理器打开再全选复制,不过速度实在慢的可以。最终 google 后选择了 wget,查了一下命令:
1
|
|
-c:断点续传;-r:递归目录;-nd:递归是不创建各层目录直接下载到当前目录下;-np:递归时不搜索上层目录。
把vim73_46src.zip里的src 文件夹(其他的可有可无)解压到一个暂命名为 make 的目录下,把所有的补丁文件放到与 make 目录同级的 patches 文件夹里。打开 Cygwin,c d到 make 目录下(在 Cygwin 里的 /cygdrive 路径下可以找到系统里的各分区),执行以下命令打补丁:
1
|
|
二.开始编译
cd 到 src 文件夹下,执行以下编译命令:
1
|
|
*_VER 跟 *_VER_LONG 的区别是,前者使用不带“.”的版本号,如 200,而后者则需要,如 2.0.0。查看 Make_cyg.ma k文件可以发现,对 ruby 的支持编译需要通过版本号定位到 \$(RUBY)/lib/ruby/\$(RUBY_VER_LONG)/… 这样的路径下,所以对 ruby 使用的这个参数。
不使用 STATIC_STDCPLUS=yes 的话,gvim 运行时会需要 libstdc++-6.dll 跟 libgcc_s_sjlj-1.dll 这两个文件。
GUI=yes 就是编译 gvim,GUI=no 则编译 vim。
多字长跟 cscope 支持都是默认为 yes。
编译完成后,复制 src/ 下的 vim.exe,gvim.exe,install.exe,uninstal.exe,vimrun.exe 跟 GvimExt/ 下的 gvimext.dll(用来添加系统右键菜单的“Edit with Vim”) 还有 xxd/ 下的 xxd.exe到运行时目录下(由 vim73_46rt.zip 解压得到)就可以啦。如果需要安装,就在 cmd 里以管理员权限运行 install.exe。
三.查看成果
运行 vim/gvim ,执行命令:
1
|
|
( ̄一 ̄)y
附上下载
四.补充
- 中文系统下 cygwin 的 shell 也会自动支持中文,如果编译过程出现错误想要复制 google 一下,英文关键词的搜索结果往往会更准确,所以我想把它改为英文提示,可以在 ~/.bashrc 里末尾加上:
1 2 |
|
- 编译后可以执行以下命令清理编译文件:
1
|
|