ycm补全mysql头文件_YouCompleteMe实现vim自动补全

本文介绍了如何在Ubuntu环境下配置Vim使用YouCompleteMe插件进行C/C++自动补全。详细步骤包括安装必要的依赖、Vundle管理插件、编译YouCompleteMe以及调整.vimrc配置文件,确保.ycm_extra_conf.py文件正确设置,以支持头文件补全。
摘要由CSDN通过智能技术生成

1.准备条件

(1)最新版的Vim(7.3.584+),须支持Python。

终端输入命令:vim –version 或 打开vim用命令:version 查看版本信息,若python前有‘+’即可。

然后终端执行命令:

sudo apt-getinstall python-dev

装的过程中若遇到问题,依次执行以下命令:

sudoapt-getupdate

sudoapt-getinstall -f

之后重试安装:

sudo apt-getinstall python-dev

(2)安装cmake

ubuntu下命令:sudo apt-get install cmake

(3)安装clang

ubuntu下命令:sudo apt-get install clang

或者跳过这步,后面编译YCM时,如果没有clang会自动安装。

(4)安装Vundle

这个是用来管理vim插件的,安装和卸载都特别方便,各个插件是一个文件夹,放在目录bunble下。

2.安装vundle

(1)$:git clone https://github.com/gmarik/vundle.git~/.vim/bundle/vundle

(‘$’均表示命令提示符)

(2)在 .vimrc 的文件起始处,插入以下内容并保存:

setnocompatible " be iMproved

set rtp+=~/.vim/bundle/vundle/

call vundle#rc()

"let Vundlemanage Vundle" required!

Bundle 'scrooloose/syntastic'

Bundle 'gmarik/vundle'

"Mybundles here:"

"original repos on GitHubBundle'tpope/vim-fugitive'Bundle'Lokaltog/vim-easymotion'Bundle'rstacruz/sparkup',{'rtp':'vim/'}Bundle'tpope/vim-rails.git'" vim-scripts repos

Bundle 'L9'

Bundle 'FuzzyFinder'

"non-GitHubrepos

Bundle'git://git.wincent.com/command-t.git'" Git repos on your local machine (i.e. when working on your own plugin)

Bundle 'file:///Users/gmarik/path/to/plugin'

"...Bundle'Valloric/YouCompleteMe'filetype plugin indent on " required!

注:Bundle ‘插件名或Git链接’ 表示要安装的插件

(3)再次打开vim,在命令行模式中执行:BundleInstall

(YouCompleteMe的github地址https://github.com/ycm-core/YouCompleteMe)

进入安装插件过程:

Plugin前面有‘>’表示该插件正在安装,YoucompleteMe插件安装的时间比较长,耐心等待,不要退出,最后会提示有一个错误,这是正常的,因为ycm需要手工编译出库文件,就像上图中的‘!’,忽略它。

注:若要卸载插件,只需将.vimrc中 “Bundle ‘插件’ ”这条语句删掉,然后在vim 命令行模式中执行:BundleClean即可。

3.编译YouCompleteMe

(1)

$ cd ~/.vim/bundle/YouCompleteMe/

$./install.sh--clang-completer

参数–clang-completer是为了支持C/C++的补全,不需要可以不加。

编译过程比较长,耐心等待。

如果出现:WARNING: this script is deprecated. Use the install.py script instead.

File /home/awakenedy/.vim/bundle/YouCompleteMe/third_party/ycmd/build.py does not exist; you probably forgot to run:

git submodule update --init --recursive

原因就是你或者没用Vundle安装,或者Vundle由于网速太慢下载到一半不能把安装依赖包完全下载下来

解决方案:

进入到YouCompleteMe目录,在terminal窗口敲入git submodule update --init --recursive

(2)找到配置文件 .ycm_extra_conf.py

网上大多说这个文件在YouCompleteMe/cpp/ycm下面,但是YouCompleteMe下面就没有cpp文件夹,之前在third_party/ycmd/cpp/ycm目录下,不知道什么因为现在放在了third_party/ycmd/examples目录下了。

$ cd ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py

ls -a 即可看到。

(3)自行在YoucompleteMe/中创建cpp/ycm目录,将 .ycm_extra_conf.py拷贝进去

$ cd ~/.vim/bundle/YouCompleteMe

$ mkdir cpp

$ mkdir cpp/ycm

$ cp third_party/ycmd/examples/.ycm_extra_conf.pycpp/ycm/

4.修改.vimrc配置文件

将下面的内容添加到.vimrc里面

" 寻找全局配置文件

let g:ycm_global_ycm_extra_conf = '~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py'

"禁用syntastic来对python检查letg:syntastic_ignore_files=[".*\.py$"]" 使用ctags生成的tags文件

let g:ycm_collect_identifiers_from_tag_files = 1

"开启语义补全" 修改对C语言的补全快捷键,默认是CTRL+space,修改为ALT+;未测出效果

"letg:ycm_key_invoke_completion =''" 设置转到定义处的快捷键为ALT+G,未测出效果

"nmap :YcmCompleterGoToDefinitionElseDeclaration=expand("")"关键字补全

"letg:ycm_seed_identifiers_with_syntax =1" 在接受补全后不分裂出一个窗口显示接受的项

set completeopt-=preview

"让补全行为与一般的IDE一致setcompleteopt=longest,menu

" 不显示开启vim时检查ycm_extra_conf文件的信息

let g:ycm_confirm_extra_conf=0

"每次重新生成匹配项,禁止缓存匹配项letg:ycm_cache_omnifunc=0" 在注释中也可以补全

let g:ycm_complete_in_comments=1

"输入第一个字符就开始补全letg:ycm_min_num_of_chars_for_completion=1" 错误标识符

let g:ycm_error_symbol='>>'

"警告标识符letg:ycm_warning_symbol='>*'" 不查询ultisnips提供的代码模板补全,如果需要,设置成1即可

"letg:ycm_use_ultisnips_completer=0

上面的内容中,除了第一句寻找全局配置文件,其他的语句可以根据自己的需要更改、删除或添加。

注:如果没有在第(3)步中自己创建cpp/ycm目录拷贝.ycm_extra_conf.py文件,则需要将第一句中的路径改为全局配置文件所在的具体路径,如下:

letg:ycm_global_ycm_extra_conf ='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'

f484e055f50d4688df779d8f1031e183.png

5.保存退出.vimrc ,打开一个C/C++源程序,体验其自动补全效果。

还可以对C++的STL库智能补全:

6.

(1)配合上面安装的syntastic还可以语法检测

‘>>’指出有语法错误,但是检测速度太慢,没什么大用。

自我感觉这个语法自动检测很烦,可以禁用它:

进入 /bundle/YouCompleteMe/plugin

修改youcompleteme.vim中的:

第141行的参数改为0就可以了。

7.添加头文件

目前在include中,无法补全stdio.h等头文件,我们需要将/usr/include添加进去。路径添加到

~/.vim/bundle/YouCompleteMe/cpp/ycm/.ycm_extra_conf.py 文件中的flags

数组中,每增加一个路径,前面要写’-isystem’。

以后需要boost库等其他的补全,也需要将相应的路径添加进去。

-.YoucompleteMe还有很多强大的功能,有兴趣可以继续探索。

自动缩进

自动缩进有用,但是在某些情况下(比如函数定义有多行的时候),并不总是会达到你想要的效果,尤其是在符合PEP8标准方面。我们可以利用indentpython.vim插件,来解决这个问题:

Plugin 'vim-scripts/indentpython.vim'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值