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

  令狐虫
  WEB相关技术
  2012-08-22
  增加更多TAG »
  2,540次

对于我这样的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 vim
wget 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表现才会和原来的完全一致。

本文推送至[go4pro.org]


除非另有来自Go4Pro.org或原作者的显式声明,本站点所有文章都按照知识共享许可协议知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议进行许可。

Go4Pro.org,V3.0,2009-2014。本站点采用SymfonyBootstrapTwig等技术开发。