本文假设你已经安装好了YCM并且实际使用了,在实际使用中遇到的一两个问题的讨论。
YCM与Normal模式
大家知道在Vim
中从insert到normal有三种方式: Esc
, Ctrl+c
,Ctrl+[
由于普通键盘的Esc
键位摆放问题用着并不顺手,这时候大家可能会选择后两种方式,但是其中Ctrl+c
是与YCM相冲突的,如果你使用Ctrl+c
回到Normal模式,在写一个相对大规模点的程序的时候可能会突然发现Ctrl+c
会弹出一大串错误,非常影响体验,由于YCM是一个c-s
类型的插件,后台有个server程序ycmd
如果在ycm进行补全的时候突然需要消耗一段时间在这期间按下了ctrl+c
那么会中断ycm的补全过程,从而导致弹出一堆错误信息。 所以使用YCM插件的normal模式建议使用最后一个ctrl+[
吧,习惯下就好。
YCM的弹出菜单颜色问题
安装好YCM后有些Vimer使用自己定义的或者别人定义的colorscheme,在补全期间可能会遇到颜色冲突/颜色不明显的现象,遇到这种情况就需要手动修改这个颜色了(默认的对我来说非常不明显),其实这个弹出菜单颜色并不是YCM定义而是一个标准的菜单区域颜色,颜色属性在是Pmenu
打开vim,执行:hi
可以看到默认的Pmenu信息 :Pmenu xxx ctermfg=0 ctermbg=13 guibg=Magenta
hi是highlight的缩写,一般在colorscheme中定义了各种颜色属性,例如你打开 /etc/share/vim74(或vim73)/colors/ 下面的配色方案可以看到各种定义细节
显示修改下默认的补齐菜单颜色,终端环境我们修改xtermbg,xtermfg 即可,gui环境修改guifg,guibg
执行 :hi Pmenu ctermfg=56 ctermbg=255 显示效果如下
可以将指令放入vimrc中,也可以放到自己的colorscheme中来使用自己喜欢的搭配.
YCM的timeout设置
有时候会YCM会提示timeout从而不会自动提示(默认值为0.5s),可能由于本本性能问题或者其他有时我们想修改这个值。 (找到你的YCM目录,我用的Bundle安装如下路径)
对应的文件为 ~/.vim/bundle/YouCompleteMe/completion_request.py
找到一句 timeout=0.5 处,修改此即可。
然后在你的vim中执行YcmRestartServer
即可使用新配置。