------------------------------------------------------------------------------------------------------------------
这种方法还是有点缺陷,比如说。多加几个大括号就不能自动匹配补全多个大括号之外变量。并且需要手动按键匹配。= =(如果你的路径是纯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,latin1nice,尽情享受吧!!