自己编译vim,解决Ubuntu 12.04 terminal里执行gvim会挂起的问题

来源:互联网 发布:斯皮尔伯格 人工智能 编辑:程序博客网 时间:2024/04/30 06:53

自己编译vim,解决Ubuntu 12.04 terminal里执行gvim会挂起的问题

原文:http://www.ch-linghu.me/blog/entry/324

2012年05月08日 22:51

对于我这样的vim党来说,Ubuntu 12.04有一个非常讨厌的问题,就是在terminal里执行gvim命令的时候会挂起。使得gvim根本无法正常使用。据猛禽说这个问题已经持续了几个版本了,不知道为什么到今天都得不到解决。

在ubuntu的bug track上给出了一个workround , 就是用gvim -f 代替 gvim。当然,我表示这种使用方法非常的不爽。

今天猛禽也遇到类似的问题了,我就想干脆找找看有没有彻底解决问题的方法。幸运的是,还真有。

这个帖子就对这个问题提出了讨论。然后有人给出了一个patch,据说能解决这个问题。

虽然很不想在Ubuntu下自己编译软件,不过抱着试试看的态度,我加上了那个patch之后编译了一下,还真是成功了。

在这里把编译步骤记录一下。

首先安装vim的编译依赖:

sudo apt-get build-dep vim

然后去获取vim的源码:

hg clone https://vim.googlecode.com/hg/ vim

当然了,上面那一步需要事先安装mercurial,这个很简单,就不说了。

然后把上面那个patch抓到vim目录(就是项目的根目录)里来。

cd vimwget https://raw.github.com/gist/2576464/dcbc773312b1488f00eb8b8cb24dd74983349d89/fix-gui-gtk-fork-issue.diff

我个人觉得不是用于开发目的的话,直接编译主线代码不太好。所以先切换到某一个tag做编译比较好。一般当然是用最新的那个tag。

先用

hg tags | head

查询一下当前tags,比如我这里最新的是 v7-3-515

再用

hg update v7-3-515

切换到指定的tag。

然后开始打补丁:

patch src/gui.c fix-gui-gtk-fork-issue.diff

打完补丁之后当然应该去确认一下代码,看看补丁代码是不是已经在了,更简单的方法是直接用 hg diff 确认。这个也不细说了。

假设补丁已经正确打上。那接下来就是很熟悉的编译步骤了。不过这里要注意的是,默认的编译选项好像不行,至少要加上 --with-features=huge 才能使补丁生效。这个部分我没有深究,有兴趣的可以看看为什么。

我用的编译选项是:

./configure --enable-pythoninterp \            --enable-cscope \            --enable-multibyte \            --with-features=huge \            --with-compiledby=ch.linghu@gmail.com

configure完成之后就是 make 和 make install,这个没什么好说了的吧?

安装完成之后的程序在 /usr/local/bin 里,正常情况下会优先使用。可以用 gvim --version 确定一下(看版本号和编译者以及编译时间)。

编译安装完成之后,再执行gvim,应该是没有问题了。(至少我这里已经正常了)

Update:

这样编译出来的vim无法读取Ubuntu系统原有的系统配置,需要做一个软链接:

ls -n /usr/share/vim /usr/local/share/vim

这样编译版的vim表现才会和原来的完全一致。

原创粉丝点击