centos安装youcompleteme

时间:2021-08-30 00:59:15

哈哈,我又回来了,简单的重新装了一边虚拟机,又把vim配置了一遍,这回有信心把youcomplete的安装方法贴出来了,先给个权威的链接,然后给出具体步骤,保证没问题可以安装成功

http://www.centoscn.com/image-text/install/2016/0424/7115.html

什么是youcompleteme?就是一个强大的自动补全插件,安装此插件之后配置一下vim,这样在敲代码的时候就不会有忘记函数名的尴尬了~

我们需要以下几步

  • 先检查一下自己的虚拟机中是否有安装python,用vim试一下 :echo has('python') 如果得到结果为1 就说明有(其实有没有都无所谓,再执行一遍安装命令绝对没错)
yum install python
  • 安装vundle,vundle是一款vim插件管理工具,使用它安装youcomplete很简单

git clone https://github.com/gmarik/Vundle.vim.git~/.vim/bundle/Vundle.vim

备用:git clone https://github.com/gmarik/vundle.git
  • 配置vundle

在vimrc中添加这样的配置语句

set nocompatible
filetype off
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'gmarik/Vundle.vim'
Plugin 'Valloric/YouCompleteMe'
call vundle#end()
filetype plugin indent on
  • 安装youcompleteme

去github上clone一下youcompleteme的代码

git clone https://github.com/Valloric/YouCompleteMe.git ~/.vim/bundle/YouCompleteMe

然后在vim里面安装一下,执行

:PluginInstall 

看到有DONE!显示就好了

  • 编译youcomplete

这一步坑了我好久,网上好多抄袭的全是apt命令和dnf命令,不太适合我的centos7,用yum就好了!

yum install automake gcc gcc-c++ kernel-devel cmake
yum install python-devel python3-devel

不管安没安装python在这两句命令执行之后你都有了

接下来就是编译的重头戏

cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer

执行以上两句命令,然后等待就好了~编译就好了

  • 配置vim

修改vimrc文件

let g:ycm_global_ycm_extra_conf = '/home/li/.vim/bundle/YouCompleteMe/.ycm_extra_conf.py
let g:ycm_seed_identifiers_with_syntax= " 语法关键字补全
let g:ycm_confirm_extra_conf= " 打开vim时不再询问是否加载ycm_extra_conf.py配置
inoremap <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>" "回车即选中当前项
set completeopt=longest,menu "让Vim的补全菜单行为与一般IDE一致(参考VimTip1228)

注意第一句,/home/li/这部分不一定通用,根据自己当前登陆的账户来定,我的使用root登陆的,所以这部分就是/root/

  • (可能会有)附件

有可能.ycm_extra_conf.py这个文件会自动就有,也许会没有,find一下,没找到的话就自己vim修改一下,以下是该文件内容,复制之前,友情提示,在vim输入

:set paste

进入复制模式,这样子复制之后格式就不会乱了~

import os
import ycm_core
flags = [
'-Wall',
'-Wextra',
'-Wno-long-long',
'-Wno-variadic-macros',
'-fexceptions',
'-stdlib=libc++',
'-std=c++11',
'-x',
'c++',
'-I',
'.',
'-isystem',
'/usr/include',
'-isystem',
'/usr/local/include',
'-isystem',
'/Library/Developer/CommandLineTools/usr/include',
'-isystem',
'/Library/Developer/CommandLineTools/usr/bin/../lib/c++/v1',
] compilation_database_folder = '' if os.path.exists( compilation_database_folder ):
database = ycm_core.CompilationDatabase( compilation_database_folder )
else:
database = None SOURCE_EXTENSIONS = [ '.cpp', '.cxx', '.cc', '.c', '.m', '.mm' ] def DirectoryOfThisScript():
return os.path.dirname( os.path.abspath( __file__ ) ) def MakeRelativePathsInFlagsAbsolute( flags, working_directory ):
if not working_directory:
return list( flags )
new_flags = []
make_next_absolute = False
path_flags = [ '-isystem', '-I', '-iquote', '--sysroot=' ]
for flag in flags:
new_flag = flag if make_next_absolute:
make_next_absolute = False
if not flag.startswith( '/' ):
new_flag = os.path.join( working_directory, flag ) for path_flag in path_flags:
if flag == path_flag:
make_next_absolute = True
break if flag.startswith( path_flag ):
path = flag[ len( path_flag ): ]
new_flag = path_flag + os.path.join( working_directory, path )
break if new_flag:
new_flags.append( new_flag )
return new_flags def IsHeaderFile( filename ):
extension = os.path.splitext( filename )[ ]
return extension in [ '.h', '.hxx', '.hpp', '.hh' ] def GetCompilationInfoForFile( filename ): if IsHeaderFile( filename ):
basename = os.path.splitext( filename )[ ]
for extension in SOURCE_EXTENSIONS:
replacement_file = basename + extension
if os.path.exists( replacement_file ):
compilation_info = database.GetCompilationInfoForFile(
replacement_file )
if compilation_info.compiler_flags_:
return compilation_info
return None
return database.GetCompilationInfoForFile( filename ) def FlagsForFile( filename, **kwargs ):
if database: compilation_info = GetCompilationInfoForFile( filename )
if not compilation_info:
return None final_flags = MakeRelativePathsInFlagsAbsolute(
compilation_info.compiler_flags_,
compilation_info.compiler_working_dir_ ) else:
relative_to = DirectoryOfThisScript()
final_flags = MakeRelativePathsInFlagsAbsolute( flags, relative_to ) return {
'flags': final_flags,
'do_cache': True
}

centos安装youcompleteme的更多相关文章

  1. centos 在安装YouCompleteMe时提示 Fatal &colon; pyconfig&period;h No such file or directory

    问题:centos 在安装YouCompleteMe时提示 Fatal : pyconfig.h No such file or directory 解决:安装python-devel yum ins ...

  2. Linux CentOS 7 YouCompleteMe相关配置。

    CentOS 6.5上面弄了2天,以失败告终!!!当作练手了.在网上看到一篇CentOS7.0上安装YouCompleteMe插件的文章,就重新在虚拟机上安装了一个CentOS7,按那个文章执行了一下 ...

  3. CentOS安装gitlab,gerrit,jenkins并配置ci流程

    CentOS安装gitlab,gerrit,jenkins并配置ci流程 By Wenbin juandx@163.com 2016/4/9 这是我参考了网上很多的文档,配置了这三个软件在一个机器上, ...

  4. 【推荐】CentOS安装Subversion-1&period;8&period;11&plus;HTTP协议支持配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. 我们需要搭建一个自己的SVN服务器. 此外,搭建好的SVN服务器除了需要支持svn协议外,最好还需要支持HTTP协议和HTTPS协 ...

  5. 【推荐】CentOS安装PHP-5&period;6&period;4&plus;扩展安装&plus;安全配置&plus;性能配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 前段时间PHP官方发布了一个重要的安全升级公告,修复了两个unserialize函数的严重漏洞,目前受影响的版本有: ...

  6. CentOS安装Apache-2&period;4&period;10&plus;安全配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装Nginx之前,请确保已经使用yum安装了各基础组件,并且配置了www用户和用户组,具体见<CentOS ...

  7. CentOS安装Nginx-1&period;6&period;2&plus;安全配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装Nginx之前,请确保已经使用yum安装了pcre等基础组件,具体见<CentOS安装LNMP环境的基础 ...

  8. CentOS安装MySQL-5&period;6&period;10&plus;安全配置

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装MySQL之前,请确保已经使用yum安装了各类基础组件,具体见<CentOS安装LNMP环境的基础组件& ...

  9. 转: CentOS 安装 SVN1&period;8 客户端

     from: http://blog.csdn.net/clementad/article/details/46898091 CentOS 安装SVN客户端 标签: subversionrpmcent ...

随机推荐

  1. ios 模拟器不显示系统版本了,后边都是 uuid 了,怎么弄回来&quest;系统升级xcode6&period;4&comma;模拟器找不到选择了?

    当我用El Capitan Beta 下 Xcode6.4版本时候出现了问题 常用的Scheme 选择版本不见了 而在Xcode 7.0 beta 6中显示有 简直就是坑,经过查资料其实是一个bug ...

  2. eclipse中 com&period;sun&period;image&period;codec&period;jpeg&period;JPEGCodec 无法编译通过问题

    在Eclipse中处理图片,需要引入两个包:import com.sun.image.codec.jpeg.JPEGCodec;import com.sun.image.codec.jpeg.JPEG ...

  3. python编码问题一点通

    一.了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的, ...

  4. JavaScript一些常用方法一

    整理以前的笔记,在学习JavaScript时候,经常会用到一些方法,但是有时忘掉了具体用法,因此记下.方便以后查阅. 这篇博文先说明这些方法的用途: splice().push().pop() .sh ...

  5. 初识Velocity

    哇,好长时间没有写文章啦~ 楼主最近在工作中认识了一个叫做Velocity的java的模板引擎,小白的我去网上看了一下,应用还蛮多的,然而我目前接触到的只是用于基于模板生成这块的知识,想写个文章记下, ...

  6. 【Gym 100812C】Story of Princess &lpar;走完图所有边&rpar;

    BUPT2017 wintertraining(15) #7A 题意 给你一个图,n个点m条边,求走遍所有边,至少经过几次点,及输出依次经过的点.n and m (2 ≤ n ≤ 10^5, 1 ≤  ...

  7. java-ActiveMQ

    ActiveMQ安装 下载 activeMQ jar包.(https://activemq.apache.org/download.html) 1.直接运行 2.在服务里运行(如果要安装服务,点击In ...

  8. HDU 3980 Paint Chain (sg函数)

    Paint Chain Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  9. POJ1523&colon;SPF&lpar;无向连通图求割点)

    题目:http://poj.org/problem?id=1523 题目解析: 注意题目输入输入,防止PE,题目就是求割点,并问割点将这个连通图分成了几个子图,算是模版题吧. #include &lt ...

  10. 20145327 《Java程序设计》第十周学习总结

    20145327 <Java程序设计>第十周学习总结 教材学习内容总结 网络编程就是运行在不同计算机中两个程序之间的数据交换. 网络中的每个设备都会有一个唯一的数字标识,这个就是IP地址. ...