首页 > 解决方案 > neovim / vim8 的 C# LSP 自动补全客户端

问题描述

我已经尝试了几种方法来使它工作,但似乎没有简单的方法。是的,有大量的插件和配置。但根据 2019 年 10 月,它们不能正常工作。

所以这似乎 csharpers 应该去 VS(或 Rider),那是 MS 提出 LSP 的时候。你如何让 IDE 像 nvim 一样与 C# 一起工作?

基本上客户端应该像这样启动服务器并使用 LSP。

~/.cache/omnisharp-vim/omnisharp-roslyn/run -s <PATH TO SLN OR DIR>

标签: c#vimautocompletelanguage-server-protocolcoc.nvim

解决方案


我刚刚通过全新安装成功地使用了omnisharp / ale。您可能希望完全卸载omnisharp (~\AppData\Local\omnisharp-vim~/.omnisharp),以防万一您有旧版本。

你没有提到你的操作系统;我在 Windows 10 和 Mac OS 中都可以使用。如果您使用的是 Mac OS,请确保您brew install libuv首先。

我的环境

  • Windows 10 (v1903) 和 Mac OS 10.14.6
  • Vim 8.1.2244
  • dotnet core 3.1 - 我希望 3.0 也能正常工作

指示

首先,我使用vim-plug作为我的插件管理器来处理安装。我使用 vim-plug 的自述文件中的 bash/powershell 片段将它安装在 Windows 和 Mac OS 中。

然后我将以下内容添加到我的 vimrc (~\_vimrc在 Windows 上,~/.vimrc在 Mac OS 上):

"vim-plug config
call plug#begin()
Plug 'OmniSharp/omnisharp-vim'
Plug 'dense-analysis/ale'
call plug#end()

" plugin config
let g:OmniSharp_server_stdio = 1

重新启动 vim,然后运行:PlugInstall​​. 它会为你克隆omnisharp和ale。

接下来,找到一些 C# 解决方案,并确保该解决方案在命令行中构建(例如dotnet build,应该完成且没有错误)。如果您还没有 SLN 文件(dotnet new sln然后dotnet sln add MyProj.csproj) ,您还需要一个 SLN 文件

选择一个 C# 文件并在 vim 中打开它。您应该看到以下通知:

全方位安装

如果安装没有自动启动,您可以使用:OmniSharpInstall. 安装需要在终端窗口中下载一两分钟。安装完成后,重新打开vim并执行:cd \path\to\my\solution,确保vim里面的工作目录是正确的。然后用例如打开一个文件:e MyProj\Program.cs

服务器将自动启动;不要手动启动它。在服务器启动的前几秒钟我收到很多语法错误,之后我没有任何错误。

要启动自动完成功能,请输入类似Console.then hit 的内容Ctrl-x o

vim 自动完成

上面的屏幕截图底部栏有vim-airline ——这不是omnisharp的一部分,也不是必需的。

上面的截图是 Windows,但它在 Mac OS 中也可以正常工作:

苹果系统

我的完整 vimrc可在此处获得,我正在测试的源代码可在此处获得


推荐阅读