【vim环境配置】在centos6.4上配置vim的一些零碎记录

上一篇日志已经step by step地实录了如何在本机mac上配置vim开发环境已经各种插件。

 

有了一定经验之后,开始在实验室远程server上centos6.4的环境下配置vim环境。

这台机器是内网服务器连外网比较麻烦,考虑到将来在公司配置开发机环境也是基本不能联网的,所以就当提前适应了吧。

 

这里把遇到的一些关键点记录下来,以便后续查阅。

 

编译vim74

  由于YouCompleteMe插件需要vim7.3高版本支持;而server上的vim是7.2的,比较旧了。因此还是要重新编译vim74。

  这里主要遇到两个问题:

  1. 安装依赖ncurses-devel

  2. 编译安装pythong2.7.6 

    (1)注意配置shared选项(http://taoo.iteye.com/blog/1826912

    (2)如果最后提示编译python的时候失败,需要查看需要缺了哪些库导致的(http://www.111cn.net/sys/CentOS/66072.htm 比如,缺少zlib,一些功能模块的编译就会fail

  3. 执行./configue的时候需要检查各项是否都能支持(比如,一编译到perl相关的项目就出问题,索性我就把--enable-perlinterp这个选项去掉了

  4. make一般不要root权限,但是make install就得需要root权限了,因为需要修改/usr/bin这类的东西

 

不用编译的vim插件

  这些插件大体上可以直接从本机直接文件夹平移到server上面。但是还是有些插件运行要依赖python的包。比如,刚编译好vim74并把一些插件直接放到bundle下面之后,打开vim,发现老提示import XXX失败(比如,ultisnips这个插件,老提示找不到这找不到那的)。

  一个可行的解决办法就是在.bash_profile中加一句话:

export LD_LIBRARY_PATH=/usr/local/lib

  随后就不报错了,原因是找到了各种lib库了。

  之前实习的时候,一般在开发机上运行python代码,经常把python的环境直接也传到开发机上面,然后再设置下LD_LIBRARY_PATH就OK了。

 

编译YouCompleteMe(YCM)

  由于不能联网,编译安装YCM的时候真是吃了不少苦头。

  1. 由于编译ycm共享库的时候用到了cmake,因此先在服务器上安装cmake

    (http://www.cnblogs.com/zhoulf/archive/2013/02/03/2890717.html

  2. 编译到某个步骤,遇到了/usr/bin/ld的问题,找到了这篇帖子解决(https://groups.google.com/forum/#!topic/cloudi-questions/-vDPvKYRsM4)。就是看到了这个帖子,才知道了是python编译的时候如果没有选择shared这个选项,是不会产生共享库的。后面必须把编译过程认真学一遍,否则以后这种问题会层出不穷,耗费大量精力。

  3. 如果是正经的安装,是需要先编译clang+llvm,再编译安装YCM的。而要想编译clang+llvm,又得要求gcc的版本,太麻烦了,就没有去折腾了。退而求其次,选择了一个linux的预编译的clang+llvm的pre-built包直接用了。(后面遇到的部分妖人问题也是由于这个)。

  4. 编译安装YCM除了需要make ycm_support_libs之外,还需要在YCM的目录下执行./install --clang-completer才能利用libclang来执行semantics的C-family的补全。更严重的是,如果不执行./install,打开vim后会一直报YCM server shut down的错误。这个问题也折腾了最久。最后由于不能联网,所以没有添加--clang-completer这个选项,结果补全的内容不带有参数。

  5. 在4中查错的时候,进一步了解了YCM是C/S结构的,因此在/tmp/ycmd下面可以查看错误日志输出,用以定位问题。

 

一些小问题

   刚弄好,直接打开vim,发现delete按键不好使;当时略慌,以为什么又弄错了,甚至一度想放弃YCM了,回到原来的环境算了。后来镇定下来google了一下,发现这种按键的作用在vim中是可以配置的。以后凡是遇到vim中按键跟正常不一样的,就可以去google修改那些配置。

 

最后,除了YCM的semantic有些问题,其余的插件都正常使用。对比效果如下

(1)server上的补全效果:

  

(2)mac上的补全效果:

   

 

可以看到二者的补全上是有差异的。这个问题有些纠结,暂时还么有解决。

我分析可能有两个原因:

(1)clang+llvm的预编译包的问题。我在centos上用的clang+llvm预编译包(http://llvm.org/releases/download.html)不是针对centos的,因此可能有些补全上的问题;而本机mac上用的clang+llvm就是与mac配套的,所以就把参数信息显示全了。如果要想在clang+llvm这个环节没有问题,最好的办法就是在server上重新编译一下clang+llvm的包(具体编译的方法参照http://ilovers.sinaapp.com/article/centos下安装llvmclang)。但是这个编译安装,还需要gcc4.7以上的环境,如果这个也改就太折腾了;而且server还不是我一个人用,玩儿坏了还影响其他人;因此最后就没动gcc,也就没有编译clang+llvm。

(2)YCM的./install时候少了参数--clang-completer这个参数。参考ycm作者的git(https://valloric.github.io/YouCompleteMe/),参见其中full installation guide的部分:

  

  我自己在执install.sh的时候,没有加入“--clang-completer”这个选项。原因还是server上没有clang,且gcc版本太低。可能这个也是么有semantic support的主动原因。

  PS : 通过上面的安装经历,以后再遇到这种插件的编译安装,最好直接去作者的主页去看full installation guide;以作者的full guide为主,再google其他人的安装经验;因为每个人的机器环境是不同的,而一般作者在full guide的时候会考虑到这个因素。

posted on 2015-10-14 01:07  承续缘  阅读(1167)  评论(0编辑  收藏  举报

导航