最近某门语言写得有点多, 没有好补全日子真的不太好过.
- 最开始用的是Star贼多的: YouCompleteMe. 这个引擎的作者听说是一位Google大佬.
以下是针对不同语言的一些评测:
C++. 补全效果很好, 基本上只要.ycm_extra_conf.py配置好了, 整个项目的各种Symbol都能够补全出来.
Rust. 加入邪教之后, 用YCM自带的Racer进行补全Rust, 刚开始效果很好, 体验和C++差不多, 但是一旦引入外部的crate, 里边的Symbol根本没有办法补全. 这样依赖一多, 整个人都不好了.
Python. 写过一些小的Python脚本, 感觉YCM后端用的是Jedi, 感觉速度还行. 体验良好.
就其整体来讲:
让我最怀念的还是YCM的模糊补全, 可能是最骚的了, 比如上文出现了某个单词: iloverust, 我只需要键入: ilr, 其实我们可以省略头字母, 直接打: lrs, 某些情况下可能会更快!.
对别的插件友好, 例如autopair, ultisnips等.
但是最让人头疼还是YCM的安装以及更新, 如果你需要补全rust/c-family之流的语言, 你就需要每次从新编译一边补全的后端. 耗时, 麻烦
当你接触的语言开始一多, 就会发现YCM的局限性太大, 现在不支持lsp, 感觉很难混下去了, 直接让我选择了弃坑
弃坑之后, 投向了Shougo大佬的怀抱: deoplete, 这个是一个异步补全的框架, 整体速度并没有YCM快, 但是支持lsp, 这样各种语言的体验都比较统一, 具体能够实现什么功能就要看lsp server的本事了, 但是这个补全有个很大的坑, 他有着自己所谓的生态, 各种后续的插件列表:这就包括了自己的片段补全neosnippet(只能向前跳!!!!!), 说实话, 没有一个是我喜欢的. 另外就是本身deoplete真的是慢, 每次lsp的异步结果和自身buffer补全的异步结果不是同时到达, 明明是已经选中了某个Symbol, 都会被异步结果打乱顺序, rank做的很差劲, ... 直接弃坑. 用了两个月.
昨天转向了coc.nvim, 可以说是很舒服了, ts写后端, rank很贴心, 体验如丝般舒滑, 和别的插件兼容性良好, 主要是不需要通过vim-plug来添加lsp client, 直接使用:CocInstall lsp-client, 然后yarn就帮你做好了一切. 通过json来配置我们的lsp client, 还可以补全函数参数(随便你怎么跳). 附上一个截图:

可能一个不好的一个地方就是, 光标闪烁太严重, 对vim的支持不好, 需要搭配neovim食用