gpt4 book ai didi

python - 如何在 Neovim 中使用 Python 语言服务器协议(protocol)

转载 作者:行者123 更新时间:2023-12-01 06:41:34 25 4
gpt4 key购买 nike

我花了相当多的时间研究如何在 neovim 中使用 Python (3) 的语言服务器协议(protocol) (LSP)。我主要是在寻找 Python 3 的自动补全功能及其模块,例如 PySide2。

遗憾的是我无法让我的配置文件(.config/vim/init.vim)工作。我知道github上有很多。但它们包含太多附加功能,我还无法调整其中一项来满足我的需求。有些也已经过时了。

这是我迄今为止尝试过的:

www.langserver.org 有一个很长的语言客户端和服务器列表。

我安装了适用于 Python 的 Palantirs 语言服务器协议(protocol) ( https://github.com/palantir/python-language-server ):

pip3 install 'python-language-server[all]'

下一步我通过 vim-plug 安装了 neovim 的语言客户端。实际上我尝试了几种,但我们还是以麦芽酒为例( https://github.com/dense-analysis/ale ):

call plug#begin('~/.local/share/nvim/plugged')
" Plugins:
Plug 'dense-analysis/ale'

" Initialize plugin system
call plug#end()

并通过 :PlugInstall 安装它

然后,为了使自动完成功能发挥作用,必须在加载 Ale 之前进行设置:

" initialize before ale is loaded
let g:ale_completion_enabled = 1

要与 Omnicompletion 一起使用,还需要一项设置:

set omnifunc=ale#completion#OmniFunc

经过更多谷歌搜索后,我读到我必须注册语言服务器( https://vi.stackexchange.com/questions/20958/use-the-pyls-python-lsp-with-ale-on-neovim ):

if executable('pyls')
au User lsp_setup call lsp#register_server({
\ 'name': 'pyls',
\ 'cmd': {server_info->['pyls']},
\ 'whitelist': ['python'],
\ })
endif

这给了我最终的 init.vim:

" Specify a directory for plugins
" - For Neovim: ~/.local/share/nvim/plugged
" - Avoid using standard Vim directory names like 'plugin'
call plug#begin('~/.local/share/nvim/plugged')
" Plugins go here:

" Language Server Client
Plug 'dense-analysis/ale'

" initialize before ale is loaded
" is that the right spot?
let g:ale_completion_enabled = 1

" Initialize plugin system
call plug#end()

set omnifunc=ale#completion#OmniFunc

" register the language server
if executable('pyls')
au User lsp_setup call lsp#register_server({
\ 'name': 'pyls',
\ 'cmd': {server_info->['pyls']},
\ 'whitelist': ['python'],
\ })
endif

如果我现在打开一个如下所示的文件,并在 PySide2. 之后按 Ctrl + N 完成我在 nvim 中只看到以下屏幕:

#!/usr/bin/env python

>>from PySide2.usr
-- usr
~ bin
~ env
~ python
~ from
~ PySide2
~

它只是文件中已出现的单词的列表 - 就像普通的 Omnicompletion 一样,但不是 PySide2 库中的模块。

我只是在寻找一种简约的配置来通过 LSP 启用自动完成功能。

最佳答案

coc.nvim 比 lsp 的 ale 更容易设置

vimrc:

Plug 'neoclide/coc.nvim', {'branch': 'release'}

然后从 vim8/nvim 中:

:PlugInstall
:CocInstall coc-python

关于python - 如何在 Neovim 中使用 Python 语言服务器协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59436119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com