最近某门语言写得有点多, 没有好补全日子真的不太好过.
- 最开始用的是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食用