最近在整理和更新Vim的插件,发现blogit.vim这个插件已经在一个角落里面很久了。由于这个插件调用了Vim内嵌Python代码,但是我系统的Vim是没有带Python编译的,因此每次启动vim的时候,会先报一堆找不到Python指令的错误。忍了很久,今天终于拿了vim的源码,并且把Python/Ruby解释器全部编译了进来。做完发现MacVim也是很久没有更新了,顺便也pull了一下源码,按照官网说明更新:

$ git checkout snapshot-61
$ cd src
$ ./configure --with-features=huge \
              --enable-rubyinterp \
              --enable-pythoninterp
$ make
$ open MacVim/build/Release/MacVim.app

编译很顺利,但是在使用blogit插件时候,MacVim直接挂了,提示:

Vim: Caught deadly signal SEGV
Vim: Finished.
Segmentation fault: 11

由于之前这个插件是好的,所以我怀疑是我编译时候出了问题。Vim的插件开发和调试没有什么经验,不过官网给了debug和生成日志的步骤。按照给出的方法,找到了日志中看上去像是问题的地方:

Aug 22 15:11:27 Zeus.local MacVim[96992] : 
-[MMVimController(Private) connectionDidDie:]@1333: NSConcreteNotification 0x7f88d8ee0020 {name = NSConnectionDidDieNotification; object = connection 0x7f88d8e444a0 is invalid}

不过看不明白,不知道具体什么问题导致,如果有经验的朋友看到了请指教!其实MacVim提供了最新Lion系统上的一个编译版本(snapshot61),虽然我比较喜欢native compiling的软件,现在只好拿人家的编译下来看看。下载下来解压缩试用了一下,居然插件工作的很好。立马看了一下版本信息:

$ ./mvim --version

再和我自己的版本做了一下比较,只是发现在link时候多了两个参数。我又仔细看了一下configure的帮助,最终发现我漏了一个--with-macsdk=参数。于是,在make uninstall后重新configure了一把,然后make,试用成功!这是我最后编译的语句:

./configure --with-features=huge --enable-multibyte --enable-pythoninterp=yes \
    --enable-rubyinterp=yes --enable-perlinterp=yes --with-macsdk=10.6