博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows下MinGW编译vim7.4
阅读量:5952 次
发布时间:2019-06-19

本文共 4094 字,大约阅读时间需要 13 分钟。

学习了一段时间Vim,感觉有些功能真的很方便。因学习原因,工作平台更换到一台老式Xp电脑上,重新安装了Vim7.4。官网默认版本不支持等宽字体和GDI++渲染,需要手工编译一个修改过的版本。

1、下载MinGW

        直接从MinGW官网下载的是在线安装包,安装起来比较慢,所以从下载第三方制作好的安装包,这里使用的10.2版本;

        也可以使用 。

2、下载Gvim最新源码

        电脑上没有安装Hg,所以从Github上的镜像下载;

3、修改源码,增加对等宽字体和GDI++的渲染

        进入src文件夹,修改gui_w32.c,增加GDI++渲染功能:

/* On NT, tell the font renderer not to "help" us with Hebrew and Arabic * text.  This doesn't work in 9x, so we have to deal with it manually on * those systems. *//* bucunzai: font renderer注释掉下面两行 *//*if (os_version.dwPlatformId == VER_PLATFORM_WIN32_NT)foptions |= ETO_IGNORELANGUAGE;*/

        修改os_mswin.c,使之可以使用等宽字体:

#ifndef FEAT_PROPORTIONAL_FONTS     /* Ignore non-monospace fonts without further ado */     /*     * hzmangel: I need non-monospace fonts!     if ((ntm->tmPitchAndFamily & 1) != 0)        return 1;     */ #endif

4、安装Lua5.2

  从Lua官方网站的链接下载Lua5.2Binnary和库文件,保存在C:/Lua目录下。

4、使用MinGW环境进行编译

        进入MinGW目录,运行open_distro_window.bat;cd进入vim74/src目录,输入

make.exe -f Make_ming.mak GUI=yes OLE=yes FEATURES=HUGE PYTHON="C:/Python27" PYTHON_VER=27 USERNAME=abcat513 USERDOMAIN=163.com gvim.exe

  后来写了一个bat文件:

make.exe -f Make_ming.mak GUI=yes FEATURES=HUGE MBYTE=yes IME=yes GIME=yes DYNAMIC_IME=yes OLE=yes PYTHON="C:/Python27" DYNAMIC_PYTHON=yes PYTHON_VER=27  CSCOPE=yes DEBUG=no LUA="C:\Lua" DYNAMIC_LUA=yes LUA_VER=52 USERNAME=abcat513 USERDOMAIN=163.com gvim.exemake.exe -f Make_ming.mak GUI=no FEATURES=HUGE MBYTE=yes IME=yes PYTHON="C:\Python27" DYNAMIC_PYTHON=yes PYTHON_VER=27  CSCOPE=yes DEBUG=no LUA="C:\Lua" DYNAMIC_LUA=yes LUA_VER=52 USERNAME=abcat513 USERDOMAIN=163.com vim.exe

  在MinGW环境下进入vim/src目录并运行,就可以编译出支持Lua5.2和Python 2.7的Gvim和Vim来,使用Lua需要将Lua52.dll复制到Vim目录下,此时在Windows下就支持使用Neocomplete插件补全。

  如果是64位的系统,可以加上:ARCH=x86-64 选项。

命令具体解释可以参考:  也可以参考  

5、设置等宽字体

        下载了YaHei Consolas Hybird,并在vimrc中设置

if has("win32")    let $VIMFILES= $VIM.'/vimfiles'    set rtp+=$VIM/vimfiles/bundle/vundle    source $VIMRUNTIME/vimrc_example.vim    source $VIMRUNTIME/mswin.vim    behave mswin    source $VIMRUNTIME/delmenu.vim    set langmenu=en_US    source $VIMRUNTIME/menu.vim    language messages zh_CN.utf-8    set guifont=YaHei_Consolas_Hybrid:h14    call vundle#rc('$VIM/vimfiles/bundle/')else    set rtp+=~/.vim/bundle/vundle/    let $VIMFILES = $HOME.'/.vim'    if has("gui_gtk2")          set guifont=Inconsolata\ 14,Fixed\ 14          set guifontwide=WenQuanYi\ Zen\ Hei\ 14    endif    call vundle#rc()endif

       \空格 在vim脚本中,指的是空格。在不同系统下有不同的表现。call vundle#rc是指需要运行vundle插件,并且根据系统不同设置不同的插件目录。

编译错误为 target pathdef.c 执行失败时,可以修改Make_ming.mak

错误代码的区块:

1 pathdef.c: $(INCL) 2 ifneq (sh.exe, $(SHELL)) 3 @echo creating pathdef.c 4 @echo '/* pathdef.c */' > pathdef.c 5 @echo '#include "vim.h"' >> pathdef.c 6 @echo 'char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)";' >> pathdef.c 7 @echo 'char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)";' >> pathdef.c 8 @echo 'char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)";' >> pathdef.c 9 @echo 'char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)";' >> pathdef.c10 @echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c11 @echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c12 else13 @echo creating pathdef.c14 @echo /* pathdef.c */ > pathdef.c15 @echo #include "vim.h" >> pathdef.c16 @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c17 @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c18 @echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c19 @echo char_u *all_lflags = (char_u *)"$(CC) $(CFLAGS) $(LFLAGS) -o $(TARGET) $(LIB) -lole32 -luuid $(LUA_LIB) $(MZSCHEME_LIBDIR) $(MZSCHEME_LIB) $(PYTHONLIB) $(PYTHON3LIB) $(RUBYLIB)"; >> pathdef.c20 @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c21 @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c22 endif

第三行 @echo creating pathdef.c

给creating pathdef.c加上引号。保存,再执行make操作。

vim 7.4 356之后都支持新的参数

效果如下:

这个上有编译好的最新vim。

转载于:https://www.cnblogs.com/abcat/p/3392727.html

你可能感兴趣的文章
mysql 连接慢的问题(超过了1秒)
查看>>
1297. [SCOI2009]迷路【矩阵乘法】
查看>>
Linux嵌入式GDB调试环境搭建
查看>>
java分析jvm常用指令
查看>>
【Linux】Linux 在线安装yum
查看>>
oracle 管理操作 (转)
查看>>
DEV 等待窗口
查看>>
实验03博客园总结
查看>>
VS2017发布微服务到docker
查看>>
lombok
查看>>
Dev-FAT-UAT-PRO
查看>>
Maven, IntellJ Idea 配置注意点
查看>>
Android开发学习总结(五)——Android应用目录结构分析(转)
查看>>
观察者模式
查看>>
[PHP]PHP rpc框架hprose测试
查看>>
Atom 编辑器系列视频课程
查看>>
C#三种定时器
查看>>
范数 L1 L2
查看>>
协同过滤及大数据处理
查看>>
Java8 本地DateTime API
查看>>