呃,之前在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
二.编译
cd D:\makevim\vim\vim72 patch -p0 < vim-7.2.411_python3.patch
//有提示没有找到文件的,就直接回车,然后按y即可。
cd D:\makevim\vim\vim72\src
//在Make_ming.mak中添加如下行,从而加入python2.6和python3.1支持
PYTHON=c:\Python26 PYTHON_VER=26 PYTHON3=C:\Python31 PYTHON3_VER=31
//注意,不能只加入PYTHON3,那样编译会报错,负责会有如下的错误,当然改代码也可以解决。
make -f Make_ming.mak GUI=yes OLE=no USERNAME=dantezhu USERDOMAIN=tencent
就会启动编译啦,等编译完成,就会发现,src目录里多了一个gvim.exe~~,把他cp到你gvim的安装目录即可~~ 三.执行 OK~~,现在执行gvim,输入
:version
哈哈,不错吧,自己编译的gvim~ 再输入py,然后按下tab,看有多少命令?
OK,现在我们终于可以用pyflakes啦~~至于pyflakes的简单介绍,可以看一下牧马志的这篇博文~~ 在Vim中检查语法和执行代码在Vim中检查语法和执行代码 另,附已经编译好的gvim.exe下载。
补充一下,刚刚试了一下在linux下编译,需要在执行./configure时增加
--enable-pythoninterp
我一般编译时的选项是:
./configure --prefix=/usr/vim --enable-multibyte --enable-pythoninterp --with-features=huge
GeassLei on #
很强大~~
Reply
Dante on #
补充一下,刚刚试了一下在linux下编译,需要在执行./configure时增加
--enable-pythoninterp ,
我一般编译时的选项是:
./configure --prefix=/usr/vim --enable-multibyte --enable-pythoninterp --with-features=huge
Reply
依云 on #
编译失败。。。
make[1]: *** 没有规则可以创建“vim”需要的目标“@PYTHON3_OBJ@”。 停止。
看到标题我就很激动了,能在Vim里用上Python3是件多么令我向往的事啊~~可是,在自行解决找不到Python.h后,又遇到这个问题了。。。
Reply
依云 on #
刚刚看到发表留言时红字显示的好像是“...please wait a comment.”?
另外,我怎么没有找到文章的traceback地址?
Reply
Dante on #
哦哦,那个wait是因为用了ajax,所以要等你第一个评论发完,traceback地址的话就不清楚了……
那个,你刚才说的编译的问题啊,好奇怪,为啥我都没遇到呢……,你的python路径是不是和默认的不一样?
Reply
依云 on #
我是想说,我预想的提示应该是 please wait a moment。
Reply
Dante on #
呃,可能主题作者主要是想强调一次只能一个评论吧……
Reply
Dante on #
要不先直接试试我编译好的那个能不能满足需求?
Reply
依云 on #
你编译好的那个是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
Reply
Dante on #
我在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
Reply
依云 on #
编译Vim不是问题,问题是打了补丁就编译不成功了。仔细看了下,打补丁的时候都有3个地方失败了,另外还有打错的情况。不知你打补丁的时候情况如何。另外,我用的是7.2的源码,没有打其它补丁。你是不是用的源码不同?
Reply
Dante on #
我在linux下面编译的时候没有打补丁……即linux下的版本我没让他支持py3,只是windows版本是支持的,所以可能确实那个补丁只能支持windows版……
Reply
依云 on #
辛苦改好半天源代码终于编译成功,不过有个问题:Python2.6 和 Python3.1 不能同时使用。你的那个Windows版的可以吗?
Reply
Dante on #
呃,我那个python是2.6,py3的话是3.1……
Reply
zombie on #
如果不需要打补丁支持Python 3,就不需要用Mingw了。从VIM的SVN checkout一份最新的代码,在src目录下有Make_mvc.mak,如果安装了VC,直接nmake -f ...就行了
Reply
Dante on #
呃,我的电脑上没VC的……习惯了linux的那一套了~
Reply
fuadam on #
为什么我在ubuntu10.04下面编译vim就是没有python支持呢,参数就是按照博主的方法
Reply
Dante on #
额,文章说的是在windows下编译的哦,在linux下编译是2楼我说的方法……
Reply
fuadam on #
昨天搞到3点多终于弄出来了,是没有安装openssl导致链接失败。
Reply
Dante on #
哈哈,恭喜恭喜~~
Reply
smalldoctor on #
怎么在windows编译 在命令窗口输入 make patch 都说不是系统名利
Reply
JansonL on #
在学 python
为了在 gvim 下用
第一次学编译源码
终于编译成功~
谢谢您写了这篇文章
(第一次编译时提示
make: gcc: command not found
原来是没把 WinGW/bin 加入环境变量)
Reply
杨 on #
我在XP下找不到patch命令啊 怎么回事?
Reply
Dante on #
patch是linux的命令哦,windows下需要单独安装的~
Reply
yxpan on #
楼主您好!我是用Mercurial直接下载的最新源码,也安装了Python 2.7和3.1,进入src目录后用mingw32-make -f Make_ming.mak PYTHON=d:/Program\Files/Python27 PYTHON_VER=27
PYTHON3=d:/Program\Files/Python31 PYTHON3_VER=31编译gvim.exe却总是得到提示说找不到Python.h。不知道怎么解决?
Reply
yxpan on #
找到原因了,python的安装位置造成的。统统改到D盘根目录即可。
Reply
Nibnat on #
请问gvim74关于python3的插件有么?网上找了很久没找到
Reply
夜下凝月 on #
diff.c: In function 'ex_diffpatch':
diff.c:905:12: error: storage size of 'st' isn't known
stat_T st;
^~
diff.c:905:12: warning: unused variable 'st' [-Wunused-varia ble]
Make_cyg_ming.mak:935: recipe for target 'gobji686/diff.o' f ailed
make: *** [gobji686/diff.o] Error 1
请问这是什么原因造成的,vim80、、、python36、、、、编译一直失败
Reply
多余 on #
你好,编译好的gvim下载链接失效了,可以再分享一下吗
Reply