【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的时候会考虑到这个因素。
【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 ...
随机推荐
- IOS xcode 离线帮助文档安装和安装路径
将想要安装的xcode 帮助文档 版本,将 ‘帮助文档包’ 放入‘xcode 帮助文档安装路径’.再将Xcode软件重启. xcode 帮助文档安装路径: 在‘应用程序’->Xcode软件 右击 ...
- bzoj1801 [Ahoi2009]中国象棋
Description 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放置方法,中国像棋中炮的行走方式大家应该很清楚吧. Input 一行包含两个整数N, ...
- 轻量级HTTP服务器Nginx(常用配置实例)
轻量级HTTP服务器Nginx(常用配置实例) 文章来源于南非蚂蚁 Nginx作为一个HTTP服务器,在功能实现方面和性能方面都表现得非常卓越,完全可以与Apache相媲美,几乎可以实现Apa ...
- 怎样在 Ubuntu Linux 上安装 MySQL
本教程教你如何在基于 Ubuntu 的 Linux 发行版上安装 MySQL.对于首次使用的用户,你将会学习到如何验证你的安装和第一次怎样去连接 MySQL. -- Sergiu MySQL 是一个典 ...
- 2017.11.11 详谈application、session、request和page的作用范围
今天在图书馆遇到了问题 不知道怎么选择session还是request Web应用中的JSP和servlet都是由web服务器来调用,Jsp和Servlet之间通常不会相互调用,那么Jsp和Servl ...
- JSON对象与XML相互转换工具类
依赖jar <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId ...
- CNN训练中的技巧
转自: http://weibo.com/p/1001603816330729006673 说明:这个翻译应该是来自原文:http://yyue.blogspot.hk/2015/01/a-brief ...
- iOS网络图片缓存详解
在开发移动应用的时候比如Android,IOS,因为手机流量.网速.内存等这些因素,当我们的移动应用是针对互联网,并要频繁访问网络的话,对网络优化这块就显得尤为重要了. 比如某个应用要经常显示网络图片 ...
- 在ubuntu中docker的简单使用(一)
>>docker version 当运行docker version 命令出现Cannot connect to Docker daemon. Is the docker daemon r ...
- SSI框架下,用jxl实现导出功能
SSI框架下,用jxl实现导出功能 先说明一下,这个是SSI框架下,前端用ExtJs,应用在一个企业级的系统中的导出功能,因为是摸索着做的,所以里面有一些代码想整理一下,如果有人看到了,请视自己的架构 ...