上一篇日志已经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的一些零碎记录的更多相关文章
-
【tmux环境配置】在centos6.4上配置tmux
我学习tmux的动力如下: (1)tmux大法好.原因是被同学安利过tmux. (2)多个terminal下ssh到开发机太麻烦.还是之前实习的时候,总要开N个terminal去ssh开发机,这种东西 ...
-
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 ...
-
Linux 上配置 AG
SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...
-
Linux 上配置 SQL Server Always On Availability Group
SQL Server Always On Availability Group 配置步骤:配置三台 Linux 集群节点创建 Availability Group配置 Cluster Resource ...
-
[七月挑选]树莓派Raspberrypi上配置Git
title: 树莓派Raspberrypi上配置Git 树莓派Raspberrypi上配置Git. 开始 首先你得有一树莓派!!! 过程 查看自己树莓派的版本 pi@raspberrypi:~ $ u ...
-
zabbix--------配置邮件报警功能---服务器上配置---------
--------配置邮件报警功能---服务器上配置--------- [www.aa.com@ ~]# yum install mailx -y [www.aa.com@ ~]# vi /etc/ma ...
-
Linux c++ vim环境搭建系列(0)——简介
vim 学习 简介: 源码编译使用vim及其插件. 内容包含: vim的编译安装, llvm clang的编译安装, 插件youcompleteme的编译安装使用, 以及vim其他插件的使用. 搭建环 ...
-
CentOS6.5上golang环境配置
CentOS6.5上golang环境配置 一.下载和解压go环境包 >>cd /usr/local/src/ >>wget -c http://golangtc.com/sta ...
-
【vim环境配置】解决ubuntu上 由YouCompleteMe插件配置不当引起的 自动补全失效的问题
背景: 由于不可抗拒的原因,学习环境由之前centos的一台机器上,变成了ubuntu的一台机器上.因此,需要在新的ubuntu的机器上再配置一次vim环境.算起来这已经是第三次配置vim环境了(ma ...
随机推荐
-
Bash 中的 $0 在什么时候不是 argv[0]
每个 C 程序都有一个 main 函数,每个 main 函数都有一个 argv 参数,这个参数是一个字符串数组,这个数组的值是由该 C 程序的父进程在通过 exec* 函数启动它时指定的. 很多人说 ...
-
angular的GitHub Repository Directive Example学习
angular的GitHub Repository Directive Example学习 <!DOCTYPE html> <html ng-app="myApp" ...
-
生成N个不重复的随机数(转)
有25幅作品拿去投票,一次投票需要选16幅,单个作品一次投票只能选择一次.前面有个程序员捅了漏子,忘了把投票入库,有200个用户产生的投票序列为空.那么你会如何填补这个漏子? 当然向上级反映情况.但是 ...
-
【转】.NET开发者必备的11款免费工具
摘要:本文介绍一些最适合.NET开发人员简化Web开发的最佳工具,这些工具都是开源的,有的开发工具你既可以从网上下载可执行文件,也可以下载源代码.一些工具拥有可扩展的框架,是一个持续集成工具. 原文链 ...
-
[置顶] js 控制文章中字体的大小,mootools实现
文中字体要12.14.16号中选择: <span class="zh">字号:<b class="change-font">12< ...
-
主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思
(本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...
-
java Properties
txt文件操作 // txt文件操作 Properties prop = new Properties(); String s = "Height=200"; String s2 ...
-
网络爬虫re模块的findall()函数
findall()函数匹配所有符合规律的内容,并以列表的形式返回结果. a = '"<div>指数' \ '</div>"' word = re.finda ...
-
Vue 动态绑定类名
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
-
codevs 5429 多重背包
5429 多重背包 http://codevs.cn/problem/5429 分析: f[i]=g[j-k*siz[i]]+k*val[i]; 发现一个状态d只会更新,d+siz[i],d+2*si ...