缓冲区补全
ctrl+n/ctrl+p从当前缓存区补全

标签文件补全
ctags
ctags下载
https://github.com/universal-ctags/ctags-win32
解压后添加path环境变量
利用ctags对c语言的include头文件目录产生tag文件
生成c++tag文件cpp.tagfile
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --languages=c++ -f D:\libs\tags\cpp.tagfile D:\libs\mingw48_32\i686-w64-mingw32\include
生成gtk库的tag文件gtk.tagfile
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q --languages=c++ -f D:\libs\tags\gtk.tagfile D:\libs\gtk+-bundle-2.12.11-20080720\include
omnicppcomplete插件的安装
description
This script is for vim 7.0 or higher, it provides C/C++ completion thanks to a ctags database.
If you don't want a completion based on ctags there are solutions using compiler front ends (real C++ parsing)
- "clang" with the following script : http://www.vim.org/scripts/script.php?script_id=3302
- "gccsense" : http://cx4a.org/software/gccsense
Features :
- Complete namespaces, classes, structs and union members.
- Complete inherited members for classes and structs (single and multiple inheritance).
- Complete attribute members eg: myObject->_child->_child etc...
- Complete type returned by a function eg: myObject->get()->_child.
- Complete the "this" pointer.
- Complete a typedef.
- Complete the current scope (global and class scope).
- Complete an object after a cast (C and C++ cast).
- Complete anonymous types (eg: struct {int a; int b;}g_Var; g_Var.???). It also works for a typedef of an anonymous type.
下载地址
https://www.vim.org/scripts/script.php?script_id=1520
解压后,将after、autoload、doc三个文件夹放在vim的安装目录下的vimfile文件夹下,如果没有,建立一个vimfile文件夹。这是vim建立的插件文件夹,vim运行时会自动加载里面插件

至于官方文档的~/.vim under unix or %HOMEPATH%\vimfiles under windows
我尝试在windows系统中放入%HOMEPATH%\vimfiles文件夹下,没有作用 %HOMEPATH%:C:\Users\usrname
编辑_vimrc文件,windows系统中它位于vim的安装目录下,追加下面的配置
设置tag文件
set tags+=D:\libs\tags\cpp.tagfile"生成的c语言tag文件路径
set tags+=D:\libs\tags\gtk.tagfile"生成的gtk库的tag文件路径
取消vi兼容模式和开启文件类型插件
set nocp
filetype plugin on
设置omnifunc
set omnifunc=ccomplete#Complete
对于其他的语言设置set omnifunc=javacomplete#Complete、set omnifunc=xmlcomplete#Complete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_ShowPrototypeInAbbr = 1 " 显示函数参数列表
let OmniCpp_MayCompleteDot = 1 " 输入 . 后自动补全
let OmniCpp_MayCompleteArrow = 1 " 输入 -> 后自动补全
let OmniCpp_MayCompleteScope = 1 " 输入 :: 后自动补全
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]
" 自动关闭补全窗口
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest
之后在代码编辑过程中,输入ctrl+x,ctrl+o就会开启自动补全

字典文件补全
在d:\libs\tags建立一个字典文件spell.txt
abcdfghi
acacacacac
编辑_vimrc文件,加入
set dictionary+=D:\libs\tags\spell.txt
编辑模式按ctrl+x,ctrl+k触发字典补全

如何使用ctrl+n来触发字典补全?
vimrc文件中设置
set complete+=k
complete选项
. : 表示当前以打开的缓冲区
w : 当前打开的窗口
b : 当前缓冲区列表
u : 当前处于缓冲区列表中,但是未打开的缓冲区
t : 当前标签文件
U : 当前打开的,不属于缓冲区列表中的缓冲区
k : 从字典文件中加载的补全项
i : 从当前文件和包含文件中读取
d : 从当前文件和包含文件中读取使用 define定义的宏
完整的内容可以使用 :h 'complete' 来查看。
快捷键列表
<Ctrl + n> : 普通关键字补全,主要来源自缓冲区列表和当前缓冲区
<Ctrl+x><Ctrl+n> : 与 <Ctrl+n>作用相同
<Ctrl+x><Ctrl+o> : 根据编程语言来进行补全
整行补全 CTRL-X CTRL-L
根据当前文件里关键字补全 CTRL-X CTRL-N
根据字典补全 CTRL-X CTRL-K
根据同义词字典补全 CTRL-X CTRL-T
根据头文件内关键字补全 CTRL-X CTRL-I
根据标签补全 CTRL-X CTRL-]
补全文件名 CTRL-X CTRL-F
补全宏定义 CTRL-X CTRL-D
补全vim命令 CTRL-X CTRL-V
用户自定义补全方式 CTRL-X CTRL-U
拼写建议 CTRL-X CTRL-S
候选列表颜色配置
如何改变候选列表颜色,在vim的colors文件夹中,存放着配色方案

选择使用的配色方案,编辑,加入
highlight Pmenu guibg=#444444 guifg=#6666ff
highlight PmenuSel guibg=#555555 guifg=#7777ff
Pmenu是候选列表项
PmenuSel是选中的项
guibg是背景色
guifg是前景色
之后在gvim中选择配色方案就可以了
编辑vimrc
colorscheme 配色方案
