YCM大概用来做3件事:

(1)自动补全

(2)检查语法

(3)跳转到函数定义

然后涉及到两个关键的文件.vimrc 和 .ycm_extra_conf.py

首先需要正确的配置,在.vimrc中写入,

" YouCompleteMe
" Python Semantic Completion
let g:ycm_python_binary_path = '/usr/bin/python3'
" C family Completion Path
let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
" 跳转快捷键
nnoremap <c-k> :YcmCompleter GoToDeclaration<CR>|
nnoremap <c-h> :YcmCompleter GoToDefinition<CR>|
nnoremap <c-j> :YcmCompleter GoToDefinitionElseDeclaration<CR>|
" 停止提示是否载入本地ycm_extra_conf文件
let g:ycm_confirm_extra_conf =
" 语法关键字补全
let g:ycm_seed_identifiers_with_syntax =
" 开启 YCM 基于标签引擎
let g:ycm_collect_identifiers_from_tags_files =
" 从第2个键入字符就开始罗列匹配项
let g:ycm_min_num_of_chars_for_completion=
" 在注释输入中也能补全
let g:ycm_complete_in_comments =
" 在字符串输入中也能补全
let g:ycm_complete_in_strings =
" 注释和字符串中的文字也会被收入补全
let g:ycm_collect_identifiers_from_comments_and_strings =
" 弹出列表时选择第1项的快捷键(默认为<TAB>和<Down>)
let g:ycm_key_list_select_completion = ['<C-n>', '<Down>']
" 弹出列表时选择前1项的快捷键(默认为<S-TAB>和<UP>)
let g:ycm_key_list_previous_completion = ['<C-p>', '<Up>']
" 主动补全, 默认为<C-Space>
"let g:ycm_key_invoke_completion = ['<C-Space>']
" 停止显示补全列表(防止列表影响视野), 可以按<C-Space>重新弹出
"let g:ycm_key_list_stop_completion = ['<C-y>']
let g:ycm_semantic_triggers = {
\ 'c,cpp,python,java,go,erlang,perl':['re!\w{2}'],
\ 'cs,lua,javascript':['re!\w{2}'],
\}
"ycm默认需要按ctrl + space 来进行补全,可以在上面的花括号里面加入下面两行代码来直接进行补全[不需要按键] let g:ycm_add_preview_to_completeopt =
"关闭函数原型提示

.ycm_extra_conf.py 如下:

flags = [
'-Wall',
'-Wextra',
'-Werror',
'-Wno-long-long',
'-Wno-variadic-macros',
'-fexceptions',
'-DNDEBUG',
'-std=c99',
'-x',
'c',
'-I',
'/usr/include',
'-isystem',
'/usr/lib/gcc/x86_64-linux-gnu/5/include',
'-isystem',
'/usr/include/x86_64-linux-gnu',
'-isystem'
'/usr/include/c++/5',
'-isystem',
'/usr/include/c++/5/bits'
]
def FlagsForFile(filename):
return {'flags': flags}

YCM的实现了部分编译器和预编译器的功能,使用.ycm_extra_conf.py 文件来设置这些功能,

flags是个数组,可以发现里面有 各种选项和路径。

预编译时,头文件目录指定方法有三种:标准系统目录,-I指定目录,-isystem指定路面,查找顺序是: -I > -isystem > 标准系统目录,

由此可以知道,我们需要指定目录时,只需要这样写:

‘-isystem’
'dir',

我们可以将上面的代码添加到 YCM全局目录,但是这回让YCM全局目录变得臃肿,

又由于vim启动时加载的YCM配置文件的查找顺序是当前目录>上层目录>...>根目录>YCM全局目录,

所以只需要将YCM全局目录拷贝到工程根目录,再进行添加。

下面以我的一个项目为例:

首先我配置好了 .vimrc 和 YCM全局目录的.ycm_extra_conf.py

然后将YCM全局目录的.ycm_extra_conf.py拷到源文件目录下

修改.ycm_extra_conf.py 添加进工程的头文件目录,

在当前目录(就是包含.ycm_extra_conf.py的目录)进入vim,YCM的功能正常!

-------------------------------------------------------------------------------------------------------------

今天终于把vim打造成了IDE,开心~

留个影,纪念纪念,哈哈

参考博客:

https://www.jianshu.com/p/5aaae8f036c1

https://www.2cto.com/kf/201805/742061.html

https://blog.csdn.net/nia305/article/details/79954974

YCM的使用的更多相关文章

  1. gvim 安装YCM

    gvim的插件安装笔记 1.安装vunble插件 该插件主要用于管理别的插件,借助与git,从github来下载插件,实现自动安装前提条件是git安装正确,可以听过cnd使用,并且可以正确访问gith ...

  2. [原创] [YCM] YouCompleteMe安装完全指南

    因为实在实在受不鸟ctags了: 代码中有很多类具有相同名字的变量, 比如 "id". 当我想看下当前的这个 "id" 到底是哪个id的时候, 可怕的事情粗线了 ...

  3. ycm添加自定义补全路径

    修改~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py的flags变量 未改前如下: flags = [  ...

  4. 安装vim的ycm

    环境centos 6.7 vim 7.3 安装vundle Vundle(Vim bundle)是一个Vim的插件管理器.它是把git操作整合进去,用户需要做的只是去GitHub上找到自己想要的插件的 ...

  5. YCM的安装与配置

    花了好几天的时间,总算把YCM装上了.期间遇到了各种问题,主要还是因为刚进linux,对linux环境不熟, 命令资料等查了半天.当然,YCM也普遍被认为是一种安装配置复杂,但使用起来超简单的插件. ...

  6. YCM安装与配置

    1.重新编译vim 2.通过vundle安装YCM 3.安装CMake 4.下载预先编译好的llvm+clang 5.看官网的命令,生成CMake的编译文件并编译 配置YCM: 要额外配置ycm_ex ...

  7. 编译ycm库

    在安装完YCM之后,重新打开vim还会出现如下的报错信息:ycm_client_support.[so|pyd|dll] and ycm_core.[so|pyd|dll] not detected; ...

  8. A convenient way of installing(compiling) VIM with YCM

    Ah, while I am still downloading LLVM from github(very slow.. and very large in size). I come with m ...

  9. Linux --- vim 安装、支持python3的配置、插件自动补全YCM的安装配置及全过程错误总结

    1.git(用来下载vim和相关插件) sudo apt-get install git 2,cmake(用来编译clang-llvm) sudo apt-get install build-esse ...

  10. vim之YCM配置

    BundleInstall,默认会出现错误 ycm_client_support.[so|pyd|dll] and ycm_core.[so|pyd|dll] not detected; you ne ...

随机推荐

  1. 让你的sharepoint2013具有EMS快递查询的功能

    <iframe name="kuaidi100" src="http://www.kuaidi100.com/frame/app/index2.html" ...

  2. poi读取excel的辅助类

    补充:对于这个工具已经转为一个工程项目,采用的是saxreader方式,支持大数据文件的读取.具体可以参照  github上的源码,使用可以简单参照wiki.项目wiki地址https://git.o ...

  3. Springboot开源项目实例整理

    https://www.imooc.com/article/67664 ---------------------------------------------------------------- ...

  4. 常用HTML富文本编辑器

    常用的HTML富文本编译器UEditor.CKEditor.TinyMCE.HTMLArea.eWebEditor.KindEditor简介   这篇文章主要介绍了常用的HTML富文本编译器UEdit ...

  5. Java项目性能瓶颈定位

    文章目标 当Java项目出现性能瓶颈的时候,通常先是对资源消耗做分析,包括CPU,文件IO,网络IO,内存:之后再结合相应工具查找消耗主体的程序代码.本文主要介绍系统资源消耗的分析过程,以及常用的Ja ...

  6. zendstudio 汉化

    http://archive.eclipse.org/technology/babel/index.php http://www.eclipse.org/babel/downloads.php 注册码 ...

  7. 2016 Multi-University Training Contest 2 - 1005 (hdu5738)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5738 题目大意:给定平面上的n个点,一个集合合法当且仅当集合中存在一对点u,v,对于集合中任意点w,均 ...

  8. [转载]开启debug调试模式

    debug+trace模式可以查看开发过程中TP的错误信息,可以更好地帮助开发者debug.但是debug模式的开启还不是简单的在配置文件中中设置就可以的,经过查资料摸索,找到一种有效的方法. 首先在 ...

  9. 在vue中使用animate库

    <style> @keyframes bounce-in { 0% { transform: scale(0); } 50% { transform: scale(1.5) } 100% ...

  10. ORA-01262,oracle启动报错,及Oracle启动原理

    错误状态: SQL> startup ORA-01261: Parameter db_recovery_file_dest destination string cannot be transl ...