这种方法还是有点缺陷,比如说。多加几个大括号就不能自动匹配补全多个大括号之外变量。并且需要手动按键匹配。= =(如果你的路径是纯ASCII码的话是可以自动匹配补全的)
                                                                              -------------By CHC 2014/7/25修改


内流满面啊!!这个问题在去年就已经被解决了。。还好我订阅了github。今天心血来潮就去看了一下。。发现了solution。。
按照我上回的方法戳我编译完YCM(YOUCOMPLETEME)之后,如果GVIM在打开CPP文件的时候出现Unicode can’t convert …的话就恭喜了。。要么你的CPP文件里包含了UNICODE字符。要么你的路径包含了UNICODE字符。好心酸。美中不足的地方终于解决了。
如果看完此文还不懂的话猛戳这里

首先。需要把…Vim\vimfiles\bundle\YouCompleteMe\python\ycm里面的vimsupport.py修改几行。把
106行的

def GetBufferNumberForFilename( filename, open_file_if_needed = True ):
return GetIntValue( "bufnr('{0}', {1})".format(
os.path.realpath( filename ),
int( open_file_if_needed ) )

给改为:

def GetBufferNumberForFilename( filename, open_file_if_needed = True ):
return GetIntValue( "bufnr('{0}', {1})".format(
ToUtf8IfNeeded( os.path.realpath( filename ) ),
int( open_file_if_needed ) ) )

python大法好。。可是我却不懂。不过看那个函数上就优化了那么一点点。。苍天啊!!!!
改完了之后,别急。
如果这时你打开带有中文的CPP文档时。如果你的encoding编码不是utf-8的话就会显示Unicode can’t conver …这个蛋疼的提示。
这个时候。你试一下

set encoding=utf-8
set langmenu=zh_CN.UTF-8

之后会发现突然可以补全而且没有那个讨厌的提示了。。
恩。如果发现提示变成乱码了也不要慌张。。
设置一下。

"提示信息乱码解决"
language message zh_CN.UTF-8好吧,就这么简单。。

这么设置完成过后。我突然间发现。。蛋疼的来了。。控制台居然不能输出中文。。不能忍啊。。百度了半天终于找到一个解决方案。。
set fileencodings的时候。chinese放在utf-8前面,控制台就可以输出中文了。
好了。总的这部分设置代码我贴出来。

"防止特殊符号无法正常显示
set ambiwidth=double
"设置默认编码
set encoding=utf-8
set langmenu=zh_CN.UTF-8
"提示信息乱码解决"
language message zh_CN.UTF-8
"菜单乱码解决"
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim
""set encoding=cp936
"设置文件编码
""set fileencodings=utf-8,cp936,chinese,latin-1,ucs-bom,gb18030,big5,euc-jp,euc-kr,latin1,gbk,gb2321
set fileencodings=ucs-bom,chinese,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1

nice,尽情享受吧!!