windows下编译vim(gvim)并加入python2.6和3.1支持
呃,之前在linux下编译过vim,这次由于gvim默认不支持python,所以心血来潮想要想在windows编译一下gvim,好吧,这纯属找虐……
一.准备工作:
1.Mingw,我用的版本是5.1.4
2.vim的源码文件
到ftp://ftp.vim.org/pub/vim/pc/ 下载到vim72src.zip, vim72rt.zip, vim72lang.zip三个文件。
下载完之后, 把 vim72src.zp 和 vim72lang.zip 解压到 D:\makevim,查看D:\makevim\vim\vim72 这样的目录结构, 包含src,lang等目录。
vim72rt.zip的有些独特,先不要解压,直接打开看,里面vim\vim72下面会有autoload之类的文件和目录。新建一个目录D:\makevim\vim\vim72\runtime\,并把刚才看到的那些文件全都copy到这里。
ftp://ftp.vim.org/pub/vim/patches/7.2/ 可以下载到所有的patch,但我实在没有信心打上这么多patch还能编译通过。所以直接无视掉了。(如果想要打上的话,可以新建目录D:\makevim\vim\patch\,并在D:\makevim\vim\vim72目录下打开命令行,执行for file in ../patch/7.2.*; do patch -Np0 -i $file; done)
3.由于python3.*和2.*的语法有了很大差异,所以希望能让vim同时支持这两种版本(默认的python命令是2.6,py3是3.1)
所以在网上找到了一个专门为支持python3写的一个patch,vim-7.2.411_python3.patch
把这个文件放在D:\makevim\vim\vim72\下。
4.下载python2.6和python3.1,分别安装。
5.当然,你得已经装了官方下载的gvim7.2
二.编译
1 2 | cd D:\makevim\vim\vim72 patch -p0 < vim-7.2.411_python3.patch |
//有提示没有找到文件的,就直接回车,然后按y即可。
1 | cd D:\makevim\vim\vim72\src |
//在Make_ming.mak中添加如下行,从而加入python2.6和python3.1支持
1 2 3 4 | PYTHON=c:\Python26 PYTHON_VER=26 PYTHON3=C:\Python31 PYTHON3_VER=31 |
//注意,不能只加入PYTHON3,那样编译会报错,负责会有如下的错误,当然改代码也可以解决。
1 | make -f Make_ming.mak GUI=yes OLE=no USERNAME=dantezhu USERDOMAIN=tencent |
就会启动编译啦,等编译完成,就会发现,src目录里多了一个gvim.exe~~,把他cp到你gvim的安装目录即可~~
三.执行
OK~~,现在执行gvim,输入
1 | :version |

哈哈,不错吧,自己编译的gvim~
再输入py,然后按下tab,看有多少命令?
OK,现在我们终于可以用pyflakes啦~~至于pyflakes的简单介绍,可以看一下牧马志的这篇博文~~
另,附已经编译好的gvim.exe下载。
补充一下,刚刚试了一下在linux下编译,需要在执行./configure时增加
1 | --enable-pythoninterp |
我一般编译时的选项是:
1 | ./configure --prefix=/usr/vim --enable-multibyte --enable-pythoninterp --with-features=huge |
原创文章,版权所有。转载请注明:转载自Vimer的程序世界 [ http://www.vimer.cn ]
本文链接地址: http://www.vimer.cn/?p=1229


很强大~~
[回复]
补充一下,刚刚试了一下在linux下编译,需要在执行./configure时增加
–enable-pythoninterp ,
我一般编译时的选项是:
./configure –prefix=/usr/vim –enable-multibyte –enable-pythoninterp –with-features=huge
[回复]
编译失败。。。
make[1]: *** 没有规则可以创建“vim”需要的目标“@PYTHON3_OBJ@”。 停止。
看到标题我就很激动了,能在Vim里用上Python3是件多么令我向往的事啊~~可是,在自行解决找不到Python.h后,又遇到这个问题了。。。
[回复]
刚刚看到发表留言时红字显示的好像是“…please wait a comment.”?
另外,我怎么没有找到文章的traceback地址?
[回复]
Dante 回复:
四月 29th, 2010 at 11:09 下午
哦哦,那个wait是因为用了ajax,所以要等你第一个评论发完,traceback地址的话就不清楚了……
那个,你刚才说的编译的问题啊,好奇怪,为啥我都没遇到呢……,你的python路径是不是和默认的不一样?
[回复]
依云 回复:
四月 30th, 2010 at 1:47 下午
我是想说,我预想的提示应该是 please wait a moment。
[回复]
Dante 回复:
四月 30th, 2010 at 5:39 下午
呃,可能主题作者主要是想强调一次只能一个评论吧……
[回复]
Dante 回复:
四月 29th, 2010 at 11:13 下午
要不先直接试试我编译好的那个能不能满足需求?
[回复]
依云 回复:
四月 30th, 2010 at 1:45 下午
你编译好的那个是Windows版的,但我是Linux用户啊。如果你能帮我编译个那真是太好了。我的机器是32位的,编译参数是:
./configure –enable-gui=gnome2 –enable-perlinterp –enable-pythoninterp –enable-rubyinterp –enable-cscope –enable-multibyte –enable-xim –enable-fontset –with-features=huge –disable-netbeans –prefix=/usr –enable-python3interp。
修改过的文件: http://dl.dropbox.com/u/1372730/gui.c http://dl.dropbox.com/u/1372730/feature.h
我这里编译 if_python.c 时没有找到头文件。手动加上 -I/usr/include/python2.6 后编译出错:
if_python.c: In function ‘python_enabled’:
if_python.c:372: error: ‘DYNAMIC_PYTHON_DLL’ undeclared (first use in this function)
又自行修改 Makefile 及 config.mk,最终编译成功,在不加载自己的配置时可运行,但是——
正常版本 带 GTK2 图形界面…-perl…-python -python3…-ruby
[回复]
Dante 回复:
四月 30th, 2010 at 5:41 下午
我在linux编译的都是没有界面的……,这个编译出来你也用不了应该……
我明白了……,你是用文章中的安装包按的把,这个只能给windows用户编译,linux用户的话,看看这篇文章~~
http://www.vimer.cn/2010/03/linux%e4%b8%8bvim%e7%9a%84%e7%bc%96%e8%af%91%e4%bb%a5%e5%8f%8a%e7%bb%88%e7%ab%af%e4%b9%b1%e7%a0%81%e7%9a%84%e6%9c%80%e7%bb%88%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88.html
[回复]
依云 回复:
四月 30th, 2010 at 5:56 下午
编译Vim不是问题,问题是打了补丁就编译不成功了。仔细看了下,打补丁的时候都有3个地方失败了,另外还有打错的情况。不知你打补丁的时候情况如何。另外,我用的是7.2的源码,没有打其它补丁。你是不是用的源码不同?
[回复]
Dante 回复:
四月 30th, 2010 at 6:13 下午
我在linux下面编译的时候没有打补丁……即linux下的版本我没让他支持py3,只是windows版本是支持的,所以可能确实那个补丁只能支持windows版……
[回复]
依云 回复:
四月 30th, 2010 at 6:36 下午
辛苦改好半天源代码终于编译成功,不过有个问题:Python2.6 和 Python3.1 不能同时使用。你的那个Windows版的可以吗?
[回复]
Dante 回复:
四月 30th, 2010 at 6:39 下午
呃,我那个python是2.6,py3的话是3.1……
[回复]
如果不需要打补丁支持Python 3,就不需要用Mingw了。从VIM的SVN checkout一份最新的代码,在src目录下有Make_mvc.mak,如果安装了VC,直接nmake -f …就行了
[回复]
Dante 回复:
五月 8th, 2010 at 10:01 下午
呃,我的电脑上没VC的……习惯了linux的那一套了~
[回复]
为什么我在ubuntu10.04下面编译vim就是没有python支持呢,参数就是按照博主的方法
[回复]
Dante 回复:
五月 9th, 2010 at 4:47 下午
额,文章说的是在windows下编译的哦,在linux下编译是2楼我说的方法……
[回复]
fuadam 回复:
五月 9th, 2010 at 6:52 下午
昨天搞到3点多终于弄出来了,是没有安装openssl导致链接失败。
[回复]
Dante 回复:
五月 9th, 2010 at 8:33 下午
哈哈,恭喜恭喜~~
[回复]
怎么在windows编译 在命令窗口输入 make patch 都说不是系统名利
[回复]
在学 python
为了在 gvim 下用
第一次学编译源码
终于编译成功~
谢谢您写了这篇文章
(第一次编译时提示
make: gcc: command not found
原来是没把 WinGW/bin 加入环境变量)
[回复]
我在XP下找不到patch命令啊 怎么回事?
[回复]
Dante 回复:
十二月 14th, 2010 at 11:38 下午
patch是linux的命令哦,windows下需要单独安装的~
[回复]
[...] 这里有一篇关于在vim中添加Python支持的文章,值得参考: windows下编译vim(gvim)并加入python2.6和3.1支持 [...]