上一篇日志已经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的时候会考虑到这个因素。

【vim环境配置】在centos6.4上配置vim的一些零碎记录的更多相关文章

  1. 【tmux环境配置】在centos6.4上配置tmux

    我学习tmux的动力如下: (1)tmux大法好.原因是被同学安利过tmux. (2)多个terminal下ssh到开发机太麻烦.还是之前实习的时候,总要开N个terminal去ssh开发机,这种东西 ...

  2. centos6.5上配置apache + mysql + php4.4.9 + eaccelerator-0.9.5 + postgresql-8.3.13 备忘

    1.apache + mysql 直接利用 yum 安装 yum -y install httpd httpd-devel mysql mysql-server httpd-manual mod_pe ...

  3. Linux 上配置 AG

    SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...

  4. Linux 上配置 SQL Server Always On Availability Group

    SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...

  5. [七月挑选]树莓派Raspberrypi上配置Git

    title: 树莓派Raspberrypi上配置Git 树莓派Raspberrypi上配置Git. 开始 首先你得有一树莓派!!! 过程 查看自己树莓派的版本 pi@raspberrypi:~ $ u ...

  6. zabbix--------配置邮件报警功能---服务器上配置---------

    --------配置邮件报警功能---服务器上配置--------- [www.aa.com@ ~]# yum install mailx -y [www.aa.com@ ~]# vi /etc/ma ...

  7. Linux c++ vim环境搭建系列(0)——简介

    vim 学习 简介: 源码编译使用vim及其插件. 内容包含: vim的编译安装, llvm clang的编译安装, 插件youcompleteme的编译安装使用, 以及vim其他插件的使用. 搭建环 ...

  8. CentOS6.5上golang环境配置

    CentOS6.5上golang环境配置 一.下载和解压go环境包 >>cd /usr/local/src/ >>wget -c http://golangtc.com/sta ...

  9. 【vim环境配置】解决ubuntu上 由YouCompleteMe插件配置不当引起的 自动补全失效的问题

    背景: 由于不可抗拒的原因,学习环境由之前centos的一台机器上,变成了ubuntu的一台机器上.因此,需要在新的ubuntu的机器上再配置一次vim环境.算起来这已经是第三次配置vim环境了(ma ...

随机推荐

  1. April 12 2017 Week 15 Wednesday

    Genius often betrays itself into great errors. 天才常被天才误. Genius can help us get greater achievements, ...

  2. 百度非会员满速下载利器(IDM)Internet Download Manager v6.30.8 中文特别版

    下载利器(IDM)Internet Download Manager v6.30.8 中文特别版 所属分类:工具软件 应用平台:Windows 资源版本:v6.30.8 最后更新:2018年04月14 ...

  3. Spring boot 集成 Swagger

    添加依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swa ...

  4. Spring任务执行器(TaskExecutor)

    Spring任务执行器(TaskExecutor)    Spring通州任务执行器(TaskExecutor)来实现多线程和并发编程,使用ThreadPoolTaskExecutor可实现一个基于线 ...

  5. SpringBoot学习14:springboot异常处理方式4(使用SimpleMappingExceptionResolver处理异常)

    修改异常处理方法3中的全局异常处理Controller即可 package bjsxt.exception; import org.springframework.context.annotation ...

  6. Kiwi,BDD行为测试框架--iOS攻城狮进阶必备技能

    简介 Kiwi 是一个适用于iOS开发的行为驱动测试框架,旨在提供一个足够简单易用的BDD库. 项目主页: https://github.com/kiwi-bdd/Kiwi 示例下载: https:/ ...

  7. Linux添加swap分区

    swap分区的作用为当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用,那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到S ...

  8. Ubuntu安装MySQL及使用Xshell连接MySQL出现的问题(2003-Can't connect to MySql server及1045错误)

    不管在什么地方,什么时候,学习是快速提升自己的能力的一种体现!!!!!!!!!!! 以下所有的命令都是在root用户下操作(如果还没有设置root密码)如下: 安装好Ubuntu系统之后,打开终端先设 ...

  9. elasticsearch-dsl聚合-2

    接续上篇,本篇介绍elasticsearch聚合查询,使用python库elasticsearch-dsl进行聚合查询操作. 条形图 聚合有一个令人激动的特性就是能够十分容易地将数据转换成图表和图形. ...

  10. Jenkins搭建CI/CD

    所需Jenkins插件: Maven Integration pluginPublish Over SSHSSH plugin 1.配置全局工具 配置JDK: 配置Git: 配置maven: 2.创建 ...