vim代码补全-spf13,YouCompleteMe
vim代码补全
现在的图形界面的IDE(Integrated Development Environment)一般具有语法高亮,语法检查,自动补全功能,大大提高了编程的效率。
vim作为文本编辑器其强大的编辑能力很大部分来自于普通模式命令,用户使用这些命令可以快速的在文档中移动、定位、查找、替换删除、而不用使用鼠标去完成这些操作。vim另一个强大之处是支持各种插件安装,用户可以根据功能需求和习惯安装需要的插件。本文将介绍两个非常强大的开源vim插件使得vim具有IDE一样的功能,提高使用vim编程的效率。这两个vim插件分别是spf13 和 YouCompleteMe
1. vim7.4添加Lua支持
之所以安装支持Lua的vim7.4,是因为spf13需要Lua支持。
1.1 安装Lua和LuaJit
Centos的官方源中包含Lua,可以直接使用Yum命令安装
sudo yum install lua lua-devel -y
Luajit不在Centos的官方源中,需要源码安装
wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz
tar -xzvf LuaJIT-2.0.4.tar.gz
cd LuaJIT-2.0.4
// 使用默认安装路径
make
sudo make install
1.2编译安装vim7.4
// git好处是以后可以方便地更新
git clone git@github.com:vim/vim.git
tar xzvf vim-7.4.tar.bz2
cd vim74
./configure --prefix=/usr/local/bin/vim74 \
--with-features=huge \
--with-luajit \
--enable-pythoninterp=yes \
--with-python-config-dir=/usr/lib64/python2.7/config \
--enable-luainterp=yes \
--enable-fail-if-missing
--enable-fail-if-missing
make
sudo make install
2. 安装spf13
自己配置vim往往很繁琐,需要对vim配置很熟悉,spf13-vim不仅配置精良而且包含一整套精心挑选的插件,省去了很多配置细节。
curl https://j.mp/spf13-vim3 -L > spf13-vim.sh && sh spf13-vim.sh
3. 安装和配置YouCompleteMe
3.1 安装YouCompleteMe
YouCompleteMe是一个vim插件,而在spf13中指定安装YouCompleteMe插件也很方便,只需要在文件~/.vimrc.before.local中添加下面一行,然后使用Vundle安装命令即可。
let g:spf13_bundle_groups=['general', 'youcompleteme']
Vundle命令安装:
vim
:BundleInstall!
编译ycm_core.so:
ycm自动补全需要动态库ycm_core.so,需要用户自己编译,用户可以选择编译全部功能或者选择只支持C/C++自动补全:
cd ~/.vim/bundle/YouCompleteMe/
./install.py --all #编译支持所有功能
or
./install.py --clang-completer #只支持C/C++补全
3.2 YouCompleteMe配置
YouCompleteMe有两个需要配置的地方一个是.virmc,另一个是.ycm_extra_conf.py。
.vimrc位于用户home目录下,用来配置YouCompleteMe的全局行为,例如全局ycm_extra_conf.py路径,代码跳转快捷键映射。我的.vimrc配置如下:
" YouCompleteMe {
if count(g:spf13_bundle_groups, 'youcompleteme')
let g:acp_enableAtStartup = 0
" global conf which is needed to resolve name in system include
" file or other third-part include file
let g:ycm_global_ycm_extra_conf = '~/.vim/data/ycm/.ycm_extra_conf.py'
" enable completion from tags
let g:ycm_collect_identifiers_from_tags_files = 1
let g:ycm_seed_identifiers_with_syntax = 1
let g:ycm_confirm_extra_conf = 0
let g:ycm_cache_omnifunc=0
let g:ycm_key_invoke_completion = '<C-;>'
nnoremap <F5> :YcmForceCompileAndDiagnostics<CR>
nnoremap <leader>jd :YcmCompleter GoToDefinitionElseDeclaration<CR>
上面配置中全局.ycm_extra_conf.py路径很重要,如果不配置将无法解析C/C++头文件
.ycm_extra_conf.py 模版位于./YouCompleteMe/third_party/ycmd/cpp/ycm/,其中-isystem flag用来配置系统头文件路径,-I用来配置第三方头文件路径, 一个支持C/C++工程的ycm_extra_conf.py部分配置文件如下:
'-std=c++11',
#'-std=c99',
# ...and the same thing goes for the magic -x option which specifies the
# language that the files to be compiled are written in. This is mostly
# relevant for c++ headers.
# For a C project, you would set this to 'c' instead of 'c++'.
'-x',
'c++',
'-isystem',
'../BoostParts',
#-isystem: system include file path
'-isystem', '/usr/include',
'-isystem', '/usr/local/include',
'-isystem', '/usr/include/c++/4.8.5',
]
YouCompleteMe查找.ycm_extra_conf.py过程是在当前编辑文件所在目录查找,然后逐级向上查找,如果没有找到则使用全局配置文件。
最后截图:

vim代码补全-spf13,YouCompleteMe的更多相关文章
- Windows 10环境安装VIM代码补全插件YouCompleteMe
Windows 10环境安装VIM代码补全插件YouCompleteMe 折腾一周也没搞定Windows下安装VIM代码补全插件YouCompleteMe,今天在家折腾一天总算搞定了.关键问题是在于P ...
- Vim自动补全神器–YouCompleteMe
YouCompleteMe的特别之处 基于语义补全 总所周知,Vim是一款文本编辑器.也就是说,其最基础的工作就是编辑文本,而不管该文本的内容是什么.在Vim被程序员所使用后,其慢慢的被肩负了与IDE ...
- 【转】Vim自动补全插件----YouCompleteMe安装与配置
原文网址:http://www.cnblogs.com/zhongcq/p/3630047.html 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assis ...
- Vim自动补全插件----YouCompleteMe安装与配置
Vim自动补全插件----YouCompleteMe安装与配置 使用Vim编写程序少不了使用自动补全插件,在Linux下有没有类似VS中的Visual Assist X这么方便快捷的补全插件呢?以前用 ...
- 如何安装vim自动补全插件YouCompleteMe(YCM)
Vim是全平台上一个高度可拓展的编辑器.它本身只是一个简陋的编辑器,但是因为有各种插件而变得强大.使用Vim编写代码就不免遇到代码补全的问题.常用的代码补全插件有两个:日本人shougo写的neoco ...
- Vim自动补全神器–YouCompleteMe
一.简介 YouCompleteMe是Vim的自动补全插件,与同类插件相比,具有如下优势 1.基于语义补全 2.整合实现了多种插件 clang_complete.AutoComplPop .Super ...
- vim自动补全插件YouCompleteMe
前言 Valloric/YouCompleteMe可以说是vim安装最复杂的插件之一,但是一旦装好,却又是非常好用的.YouCompleteMe简称ycm 在安装折腾的过程中,我再一次的体会到,除了官 ...
- Vim自动补全神器YouCompleteMe的配置
简介:YouCompleteMe号称Vim的自动补全神器,该项目在github的地址:YouCompleteMe:以下在10.0.1 build-1379776平台配置完成 插件安装操作: 1.确保V ...
- CentOS7 Vim自动补全插件----YouCompleteMe安装与配置
最近刚装了新系统CentOS7,想要把编码环境配置一下,使用Vim编写程序少不了使用自动补全插件,我以前用的是neocomplcache+code_complete+omnicppcomplete.但 ...
随机推荐
- OpenStack学习笔记(一)----安装虚拟化工具
下面的命令运行在操作系统Ubuntu 14.04上. 在开源软件里面,主要是采用KVM和Xen.尽管OpenStack对KVM和Xen都支持,但是OpenStack对KVM的支持明显要比Xen做得好, ...
- 分层服务提供者(LSP)
分层服务提供者(LSP)(1) 开发过滤数据包的LSP程序可以定义过滤规则,恩,先看看LSP本身是DLL,可以将它安装至Winsock目录,创建套接字的应用程序不必知道此LSP的任何信息就能调用它 1 ...
- Freebsd下压缩解压文件详解
压缩篇: 把/usr/webgames目录下的文件打包.命名为bak.tar.gz 放到/usr/db-bak目录里 下面命令可以在任意目录执行.无视当前目录和将要存放文件的目录.tar -zcvf ...
- keepalive实现web服务器active/passive
https://github.com/acassen/keepalived/blob/v1.2.13/doc/keepalived.conf.SYNOPSIS http://ngyuki.hatena ...
- javascript 详解数组
概念 数组创建 数组读写 数组 VS. 一般对象 相同点 不同点 稀疏数组 数组的length属性 元素增删 数组迭代 二维数组 数组方法 Array.prototype.join Array.p ...
- JS常用小技巧
iframe子窗口调用父窗口方法 parent.functionName(); 二.iframe 父窗口和子窗口相互的调用方法 1.IE中使用方法: 父窗口调用子窗口:iframe_ID.iframe ...
- SAP物料价格评估与成本计算体系
物料评估目的 核算物料领用与消耗的价值,使生产成本与产品销售成本有统一计价标准. 核算企业库存价值. 物料价格方法 移动平均价,标准价,实际价,计划价. @移动平均价: 每次物料移动后重新计算平均价, ...
- 三国塔防游戏android源码
三国塔防游戏源码,这个游戏源码比较完整的,因为上传有20M限制,把代码工程包分开了,主文件是TFGame,其他res大家按照安卓包加进去就行,欢迎下载并交流 ,大家可以参考一下吧.<ignore ...
- 使用JDBC向数据库中插入一条数据(第一次修改版)
增加了一个Tools类,放了一些常用的工具 package com.JDBC.java; import java.io.IOException; import java.io.InputStream; ...
- ADO .NET 链接 增删改查
ADO.NET: 数据访问技术 就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中也可以将数据库中的数据提取到内存中供程序调用 所有数据访问技术的基础 连 ...