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