我在 Linux 上使用常规 vim(不是 neovim)。我正在尝试使用 Deoplete 进行自动完成。我知道存储库的标题.nvim在最后说,但不知怎的,自动更正仍然有效。但即使它有效,每当我启动 vim 时,我都会收到此错误:
[vim-hug-neovim-rpc] Vim(pythonx):Traceback (most recent call last):
Error detected while processing function deoplete#enable[9]..deoplete#initialize[1]..deoplete#init#_initialize[10]..<SNR>68_init_internal_variables[28]..neovim_rpc#serveraddr:
line 18:
E605: Exception not caught: [vim-hug-neovim-rpc] requires one of `:pythonx import [pynvim|neovim]` command to work
Run Code Online (Sandbox Code Playgroud)
我不知道为什么要这样做,因为自动完成功能很好,但它有点烦人,我想摆脱它。我能做些什么?
小智 12
这个解决方案对我有用,但我目前使用的是 macOS。我分享是因为背后的想法应该是相同的,也许可以帮助其他用户。
基本上,我所做的就是通过 de VIM 中的以下命令确定我的 VIM 使用的是哪个 Python 版本:
:pythonx import sys; print(sys.path)
Run Code Online (Sandbox Code Playgroud)
就我而言,我得到了这个:
['/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9', '/usr/local/o
pt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload', '/usr/local/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages', '_vi
m_path_']
Run Code Online (Sandbox Code Playgroud)
所以我必须pynvim使用Python 3.9安装,问题就解决了。
同样,在我使用 macOS 的场景中,步骤是:
brew link --overwrite python@3.9 --force
pip3 install pynvim
Run Code Online (Sandbox Code Playgroud)
参考:
https://github.com/roxma/vim-hug-neovim-rpc/issues/47#issuecomment-630323947 https://github.com/roxma/vim-hug-neovim-rpc/issues/47#issuecomment-622954462
我也遇到过类似的问题,但是是在 macOS 上。唯一的例外是,我使用了许多不同版本的 python,并且我更喜欢使用来自brew包管理器的python而不是pyenv来自brew包管理器的python)
重要提示:这种方法的主要缺点是,作为 vim 用户(已
vim通过 PM 安装brew),每次更新brew 软件包并且 vim 维护者更新 python 的依赖版本时,您将被迫重复此操作。好消息是,这种情况并不经常发生。
飞行前检查
$ which python
/Users/myusername/.pyenv/shims/python
$ python --version
Python 3.9.7.
Run Code Online (Sandbox Code Playgroud)
打开 Vim 并检查编辑器使用的是哪个版本的 Python
:pythonx import sys; print(sys.path)
Run Code Online (Sandbox Code Playgroud)
您应该得到类似于以下结果的结果:
$ which python
/Users/myusername/.pyenv/shims/python
$ python --version
Python 3.9.7.
Run Code Online (Sandbox Code Playgroud)
进入brew的vim安装程序使用的python版本的目录,并通过其pip3可执行文件安装缺少的包
:pythonx import sys; print(sys.path)
Run Code Online (Sandbox Code Playgroud)
重新打开 vim 并享受没有错误的情况