安装完成 Neovim 之后,我首先要保证 UltiSnips 插件能够正常使用。 其他插件可以后面慢慢改,但是如果不能使用 snippet 我基本就失去了写代码的能力。
最终效果:
Vim 配置文件迁移到 Neovim
基本原则
If you wish to migrate your existing Vim configuration to NeoVim, simply copy your ~/.vimrc to ~/.config/nvim/init.vim.
UltiSnips 自动提示框不见了
打开 Neovim 之后,发现基础的 UltiSnips snippet 是可以用的,但是自动提示功能失效了。 这个功能原来是 Completor 这个插件提供的。
https://github.com/maralla/completor.vim
Plugin 'maralla/completor.vim'
首先要确认到底是哪里出了问题。
按照 UltiSnips 文档的说法
https://github.com/SirVer/ultisnips
这个自动提示菜单是其他插件提供的,并不是 UltiSnips 的功能。
The completion menu comes from YouCompleteMe, UltiSnips also integrates with deoplete, and more.
官方推荐了两个插件一个是 YouCompleteMe,另一个是 deoplete。
我决定尝试一下 deoplete,纯好奇。尽管 YouCompleteMe 看起来更靠谱一点。。。
https://github.com/Shougo/deoplete.nvim
Completor 引发的问题
如果不注释掉:
Plugin 'maralla/completor.vim'
每次触发时,都会报错:
Error detected while processing function
20[1]..completor#do[13]..completor#action#do[22]..completor#compat#job_start_oneshot:
注释之后,就没有这个问题了。猜测是不兼容 Neovim 导致。
解决方法
pip3 install msgpack
我觉得下面这行才是关键,打开 Neovim 执行:
:UpdateRemotePlugins
如此,UltiSnips 终于正常工作了。
这是我跟官方安装步骤唯一有出入的地方,因为我用的是 Vundle,而文档里用的是 vim-plug, 而 vim-plug 支持在安装之后执行命令 UpdateRemotePlugins。
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
UpdateRemotePlugins 是啥
https://neovim.io/doc/user/remote_plugin.html
Just installing remote plugins to "rplugin/{host}" isn't enough for them to be automatically loaded when required. You must execute |:UpdateRemotePlugins| every time a remote plugin is installed, updated, or deleted.
概要来说,就是安装完插件之后,都需要在 Neovim 中执行 UpdateRemotePlugins 来生成一个 plugin manifest 文件。 好处是,有了这个 manifest 文件,可以加速 Neovim 的启动。
vim-plug vs vundle
这样看来确实 vim-plug 更适合配合 Neovim 使用。 后面有时间再改配置吧。
fish shell 问题
在 fish shell Neovim 中执行 PluginInstall 会报错,需要退回到 zsh 中执行才行。
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式