呃,之前在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

二.编译

//有提示没有找到文件的,就直接回车,然后按y即可。

//在Make_ming.mak中添加如下行,从而加入python2.6和python3.1支持

//注意,不能只加入PYTHON3,那样编译会报错,负责会有如下的错误,当然改代码也可以解决。

就会启动编译啦,等编译完成,就会发现,src目录里多了一个gvim.exe~~,把他cp到你gvim的安装目录即可~~

三.执行
OK~~,现在执行gvim,输入

version
哈哈,不错吧,自己编译的gvim~
再输入py,然后按下tab,看有多少命令?

python_show

OK,现在我们终于可以用pyflakes啦~~至于pyflakes的简单介绍,可以看一下牧马志的这篇博文~~

在Vim中检查语法和执行代码在Vim中检查语法和执行代码

另,附已经编译好的gvim.exe下载


补充一下,刚刚试了一下在linux下编译,需要在执行./configure时增加

我一般编译时的选项是:

Vim(gVim)对排序的妙用

前段时间有博友在群里问了一个关于vim排序的问题,因为时间问题一直没帮忙解决,今天时间正好空出来,就帮忙搞了一下。 原文的问题如下: ...

阅读全文

vim(gVim)统计字节、字符数

前段时间在做文件扫描的时候,有一些关于字节、字符数统计的需求,考虑到有同学也可能用的到,所以整理一下记录在这里。 1.统计当前字符之前的所有字节数 ...

阅读全文

糗事百科网站改版,对应qiushibaike.vim插件升级

前不久糗百改版,所以原有的qiushibaike.vim插件用起来会有一些问题,今天有时间就修改了一下. 如图: 下载地址: http://www.vim.org/scripts/script.php?scr...

阅读全文

30则回应给“windows下编译vim(gvim)并加入python2.6和3.1支持”

  1. Dante说道:

    补充一下,刚刚试了一下在linux下编译,需要在执行./configure时增加
    –enable-pythoninterp ,

    我一般编译时的选项是:
    ./configure –prefix=/usr/vim –enable-multibyte –enable-pythoninterp –with-features=huge

    [回复]

  2. 依云说道:

    编译失败。。。
    make[1]: *** 没有规则可以创建“vim”需要的目标“@PYTHON3_OBJ@”。 停止。

    看到标题我就很激动了,能在Vim里用上Python3是件多么令我向往的事啊~~可是,在自行解决找不到Python.h后,又遇到这个问题了。。。

    [回复]

  3. 依云说道:

    刚刚看到发表留言时红字显示的好像是“…please wait a comment.”?

    另外,我怎么没有找到文章的traceback地址?

    [回复]

    Dante 回复:

    哦哦,那个wait是因为用了ajax,所以要等你第一个评论发完,traceback地址的话就不清楚了……

    那个,你刚才说的编译的问题啊,好奇怪,为啥我都没遇到呢……,你的python路径是不是和默认的不一样?

    [回复]

    依云 回复:

    我是想说,我预想的提示应该是 please wait a moment。

    [回复]

    Dante 回复:

    呃,可能主题作者主要是想强调一次只能一个评论吧……

    [回复]

    Dante 回复:

    要不先直接试试我编译好的那个能不能满足需求?

    [回复]

    依云 回复:

    你编译好的那个是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 回复:

    我在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

    [回复]

    依云 回复:

    编译Vim不是问题,问题是打了补丁就编译不成功了。仔细看了下,打补丁的时候都有3个地方失败了,另外还有打错的情况。不知你打补丁的时候情况如何。另外,我用的是7.2的源码,没有打其它补丁。你是不是用的源码不同?

    [回复]

    Dante 回复:

    我在linux下面编译的时候没有打补丁……即linux下的版本我没让他支持py3,只是windows版本是支持的,所以可能确实那个补丁只能支持windows版……

    [回复]

    依云 回复:

    辛苦改好半天源代码终于编译成功,不过有个问题:Python2.6 和 Python3.1 不能同时使用。你的那个Windows版的可以吗?

    [回复]

    Dante 回复:

    呃,我那个python是2.6,py3的话是3.1……

    [回复]

  4. zombie说道:

    如果不需要打补丁支持Python 3,就不需要用Mingw了。从VIM的SVN checkout一份最新的代码,在src目录下有Make_mvc.mak,如果安装了VC,直接nmake -f …就行了

    [回复]

    Dante 回复:

    呃,我的电脑上没VC的……习惯了linux的那一套了~

    [回复]

  5. fuadam说道:

    为什么我在ubuntu10.04下面编译vim就是没有python支持呢,参数就是按照博主的方法

    [回复]

    Dante 回复:

    额,文章说的是在windows下编译的哦,在linux下编译是2楼我说的方法……

    [回复]

    fuadam 回复:

    昨天搞到3点多终于弄出来了,是没有安装openssl导致链接失败。

    [回复]

    Dante 回复:

    哈哈,恭喜恭喜~~

    [回复]

  6. smalldoctor说道:

    怎么在windows编译 在命令窗口输入 make patch 都说不是系统名利

    [回复]

  7. JansonL说道:

    在学 python
    为了在 gvim 下用
    第一次学编译源码
    终于编译成功~
    谢谢您写了这篇文章
    (第一次编译时提示
    make: gcc: command not found
    原来是没把 WinGW/bin 加入环境变量)

    [回复]

  8. 说道:

    我在XP下找不到patch命令啊 怎么回事?

    [回复]

    Dante 回复:

    patch是linux的命令哦,windows下需要单独安装的~

    [回复]

  9. [...] 这里有一篇关于在vim中添加Python支持的文章,值得参考: windows下编译vim(gvim)并加入python2.6和3.1支持 [...]

  10. yxpan说道:

    楼主您好!我是用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。不知道怎么解决?

    [回复]

    yxpan 回复:

    找到原因了,python的安装位置造成的。统统改到D盘根目录即可。

    [回复]

  11. Nibnat说道:

    请问gvim74关于python3的插件有么?网上找了很久没找到

    [回复]

  12. 夜下凝月说道:

    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、、、、编译一直失败

    [回复]

  13. 多余说道:

    你好,编译好的gvim下载链接失效了,可以再分享一下吗

    [回复]

发表评论