是否可以将 VSCode 语言服务器协议引擎与 Vim 或 NeoVim 一起使用?

Is it possible to use VSCode language-server-protocol engine along with the Vim or NeoVim?

我为 Vim 尝试了不同的代码分析引擎和工具(如 tern_for_vim),但它们没有像 VSCode 中那样提供如此出色的自动完成、转到和重命名功能]. 据我所知,VSCode 使用语言服务器协议技术来提供 IDE 功能。所以这是我的问题:

是否可以在 Vim 或 NeoVim 中使用 VSCode 语言服务器协议引擎?换句话说,可以提供与 VSCode 一样好的 IDE 类功能?

我试过javascript-typescript-langserver with deoplete.vim,但是自动完成和转到声明的质量很差。

理论上是的。 http://langserver.org/ 提供了编辑器插件和语言服务器实现的列表。

有了像 https://github.com/autozimu/LanguageClient-neovim 这样的包(它是为 neovim 设计的,还有其他包是为 vim 和 neovim 设计的)你可以在 neovim.

但是,某些实现与其在 vscode 中的工作方式相关(如 haxe lsp),因此可能有点难以使其工作。 Javascript应该集成的比较好,不过我自己没试过

是的,您可以通过 coc.nvim 安装使用它,它是 VSCode 的一个分支。然后,您将其中一个包应用于特定语言,例如 coc-python。

这是 coc.nvim 的 installation guide。然后您需要在 (Neo)Vim:

中使用此命令安装语言包
:CocInstall coc-python

然后您可以立即使用默认的 VS Code 完成引擎 (jedi) 或升级到将成为其继任者的 MSPLS:

对于 MSPLS 运行 命令 :CocConfig 并将其输入到打开的文件中:

{
    "python.jediEnabled": false
}

然后运行:CocRestart

还有其他类似 coc.nvim 的引擎,例如 YouCompleteMe。它们都有针对特定语言的小变化/定制。