Windows下MinGW编译vim7.4

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

1、下载MinGW

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

        也可以使用TDM-GCC 。

2、下载Gvim最新源码

        电脑上没有安装Hg,所以从Github上的镜像下载https://github.com/b4winckler/vim;

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.exe
make.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 选项。

命令具体解释可以参考:windows下重新编译Vim7.3(支持GDI++渲染)  也可以参考Build Python-enabled Vim on Windows with MinGW  

5、设置等宽字体

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

if has("win32")let $VIMFILES= $VIM.'/vimfiles'set rtp+=$VIM/vimfiles/bundle/vundlesource $VIMRUNTIME/vimrc_example.vimsource $VIMRUNTIME/mswin.vimbehave mswinsource $VIMRUNTIME/delmenu.vimset langmenu=en_USsource $VIMRUNTIME/menu.vimlanguage messages zh_CN.utf-8set guifont=YaHei_Consolas_Hybrid:h14call vundle#rc('$VIM/vimfiles/bundle/')
elseset rtp+=~/.vim/bundle/vundle/let $VIMFILES = $HOME.'/.vim'if has("gui_gtk2")set guifont=Inconsolata\ 14,Fixed\ 14set guifontwide=WenQuanYi\ Zen\ Hei\ 14endifcall 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.c
10 @echo 'char_u *compiled_user = (char_u *)"$(USERNAME)";' >> pathdef.c
11 @echo 'char_u *compiled_sys = (char_u *)"$(USERDOMAIN)";' >> pathdef.c
12 else
13 @echo creating pathdef.c
14 @echo /* pathdef.c */ > pathdef.c
15 @echo #include "vim.h" >> pathdef.c
16 @echo char_u *default_vim_dir = (char_u *)"$(VIMRCLOC)"; >> pathdef.c
17 @echo char_u *default_vimruntime_dir = (char_u *)"$(VIMRUNTIMEDIR)"; >> pathdef.c
18 @echo char_u *all_cflags = (char_u *)"$(CC) $(CFLAGS)"; >> pathdef.c
19 @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.c
20 @echo char_u *compiled_user = (char_u *)"$(USERNAME)"; >> pathdef.c
21 @echo char_u *compiled_sys = (char_u *)"$(USERDOMAIN)"; >> pathdef.c
22 endif

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

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

效果如下:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

除了中国,原来还有这么多国家采用十二生肖的啊~| 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅一、肥宅快乐水(qiu?)A岛-匿名版二、永远不轻言放弃知识冷知识青年 图片五目马丁饭三、终于知道怎么倒立问了冷知识日报社四、千万不能浪费文医疗音乐手绘君五、世界上所有采用十二生肖的国家冷知识日…

命中率_数据说话!詹姆斯的“皇家射手团”命中率为近十年最低

北京时间10月13日,湖人球员丹尼格林更新个人社交媒体,发布自己与奥布莱恩杯的合影等,并配文“随你怎么说,我又多了一样你拿不走的东西”。格林晒出自己与杜德利、詹姆斯的合影。此前,格林因为在NBA总决赛G5中未能命中极…

.net core 微服务下的手工签名实现,以及消除中文乱码

最近在实现一款业主签字的需求,签字前端由vue下的某个共享组件实现,其采用Canvas绘图方式实现签名图片的生成,后台主要提供签名前文档的呈现,以及签名后文件合成过的签名文档保存。FastReport报表生成器FastReport .NET是适用于.N…

高性能通道

高性能通道 http://detail.1688.com/offer/896868540.html https://www.datastoragecables.com/qsfp/qsfp-qsfp/qsfp-qsfp-ib/C9494-M-IB.html【infiniband】 http://pkg-ofed.alioth.debian.org/howto/infiniband-howto.html#toc6【infiniband-ib】posted on 2013-10-28 21:26…

清华学霸直博简历火了!CPU、操作系统、编译器全自主写,刘知远点赞

全世界只有3.14 % 的人关注了青少年数学之旅清华大学直博面试的一则简历上了知乎热榜:“实现了在自己写的CPU上运行自己写的操作系统,以及自己实现的编译器生成的程序”。简历主人是清华计算机系本科生周聿浩同学,他顺利拿到直博名额&#xf…

使用Blazor开发内部后台(一):认识Blazor

转载技术社区中一位朋友最新的文章,介绍自己为公司的 WebForm 遗留系统使用 Blazor 重写前端 UI 的经历。前言啊,又好久没写文章了,这一年一直在接触新的领域,扩展了一下技术面,学了很多新东西。前阵子发现公司内部有个…

全球科技界最鼓舞人心领袖揭晓!马斯克第一,马云第五

全世界只有3.14 % 的人关注了青少年数学之旅谁是科技界最鼓舞人心的领袖?最近技术招聘网站Hired对3600多名技术人员进行了调查,最终马斯克击败贝佐斯、纳德拉、扎克伯格等人成功当选,马云排名第五。SpaceX被评为全球私人公司中第二大最受欢迎…

设置mysql表myisam_mysql myisam 优化设置设置

mysql myisam 优化设置设置更新时间:2010年03月16日 21:28:24 作者:mysql myisam 优化设置设置,需要的朋友可以参考下。myisam_max_[extra]_sort_file_size足够大delay_key_write减少io,提高写入性能bulk_insert_buffer_sizeconcurrent_ins…

NET问答: 为什么 String.IndexOf 在 .net5 和 netcore3 中返回值不一样?

咨询区 Farhad Zamani:当我在 .NET Core 3.1 中运行下面代码的时候,程序会返回 6。class Program{static void Main(string[] args){// .NET Core 3.1string s "Hello\r\nworld!";int idx s.IndexOf("\n");Console.WriteLine(idx)…

vSpere虚拟网卡介绍

在一个物理网络拓扑中,通常都是路由器-交换机-PC机的连接,不同的服务器和PC机,通过交换机的连接而相互连通。在VMwarevSphere架构下服务器会虚拟出交换机来供ESXHost虚拟机来使用,虚拟交换机有两种,vSwitch虚拟交换机和…

快速掌握MATLAB应用,只要从这一步开始!

有人说,“MATLAB除了不会生孩子,什么都会。”矩阵运算、数据可视化、GUI(用户界面)设计、甚至是连接其他编程语言,MATLAB都能轻松实现!那么,MATLAB到底有多厉害?MATLAB拥有丰富的算法…

如何查看 .NET Core 3.1 源代码

背景在 .NET 走向开源后,我们可以方便的查看 .NET 内部的实现方式,学习和寻找问题,甚至参与到 .NET 的开发中。前段时间,同事需要查看 C# 的 Task 类 (System.Threading.Tasks) 的一些实现和内部的原理,想找 Task 类的…

装×失败的后果。。。 | 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅传说中的“虎口夺食”摄像头留下了垃圾桶欺负我的证据用力过猛扯淡还是扯底裤装失败二进洗脚盆玻璃太干净了,注意左边这个傻子哎呀,这个傻子真的是傻中奖的感觉还是要量力而行滑的还真溜。。。电动车此刻注入了灵…

.net core 下的HttpClient、WebClient性能测试

有许多服务需要拉取api接口数据,因此后端开发少不了对Http访问请求进行封装,最主要的应用方式莫过于采用WebClient进行封装,简单易用;而.net core微软官方推荐的是HttpClient和HttpClientFactory,到底哪个性能更加强劲…

北京一公交车发生爆炸 疑为乘客携带药品起反应

勘察人员从公交车里取出可疑爆炸物。薛珺摄点击查看其它图片昨日下午,一辆850路公交车行驶在阜成路时发生爆炸。5名乘客经检查均无大碍。   警方怀疑是乘客所携类似血清的药品引发化学反应所致。   事故现场在八里庄桥上,昨日下午5时许,一…

给定两个二叉树T和S,判断S是否为T的子树

2019独角兽企业重金招聘Python工程师标准>>> #include<iostream> #include <stdlib.h> using namespace std; struct node{int data;node* leftchild;node* rightchild; };bool isSubtree(node* root1,node* root2){if(root2NULL)return true;if(root1N…

ABP Framework 为什么好上手,不好深入?探讨最佳学习姿势!

离写上一篇经验总结 ABP Framework 研习社经验总结&#xff08;6.28-7.2&#xff09;&#xff0c;已经过去两周。ABP Framework 研习社&#xff08;QQ群&#xff1a;726299208&#xff09; 最近两周&#xff0c;又迎来了很多新伙伴&#xff0c;成员数量上升至300。从大家的关注…

见识过世界的强大,才能拥有掌握世界的力量

▲ 点击查看在假期的时候&#xff0c;很多家长会选择带孩子一起出去旅游玩耍。在这个过程当中&#xff0c;家长们可能经常都会被孩子各种稀奇古怪的问题给包围住。“这个车为什么能跑的那么快&#xff1f;“这棵树是什么树&#xff0c;为什么它长得比其他树要高&#xff1f;”…

FastTunnel - 打造人人都能搭建的内网穿透工具

FastTunnel是用.net core开发的一款跨平台内网穿透工具&#xff0c;它可以实现将内网服务暴露到公网供自己或任何人访问。与其他穿透工具不同的是&#xff1a;FastTunnel项目致力于打造一个易于扩展、易于维护的内网穿透框架&#xff0c;任何人都可以基于该框架二次开发&#x…

一招搞定高等数学! | 今日最佳

世界只有3.14 % 的人关注了青少年数学之旅瓜皮儿十三妹没品图一张图让你们看看鲨鱼的血液循环系统到底有多复杂普外科曾医生小猪佩奇其实是“巨猪佩奇”小猪佩奇真实身高为7.1英尺也就是2.16米但她在家还不是最高的一只浪鸭水陆两栖的自行车它出现在1932年的巴黎街头因为加装了…