c# - neovim / vim8 的 C# LSP 自动补全客户端
问题描述
我已经尝试了几种方法来使它工作,但似乎没有简单的方法。是的,有大量的插件和配置。但根据 2019 年 10 月,它们不能正常工作。
- OmniSharp-Vim客户端需要配置,它仅涵盖 C#,它列出了不再起作用的插件集成(尝试在 ALE 中选择它进行 linting)。
- YouCompeleteMe应该可以工作,但它很大而且看起来很臃肿。
- Deoplete没有 C# 的源代码,我发现的配置已经过时。
- Coc.nvim甚至没有列出 C# 和“非官方”配置有问题(像这样)。此外 Coc.nvim 似乎是 VS Code 的外星人。
- LanguageClient-neovim我没有找到合理的配置,似乎是因为C# LSP 服务器需要 .sln 文件。
所以这似乎 csharpers 应该去 VS(或 Rider),那是 MS 提出 LSP 的时候。你如何让 IDE 像 nvim 一样与 C# 一起工作?
基本上客户端应该像这样启动服务器并使用 LSP。
~/.cache/omnisharp-vim/omnisharp-roslyn/run -s <PATH TO SLN OR DIR>
解决方案
我刚刚通过全新安装成功地使用了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-airline ——这不是omnisharp的一部分,也不是必需的。
上面的截图是 Windows,但它在 Mac OS 中也可以正常工作:
推荐阅读
- php - 移位操作的优先级不明确
- ios - 分段控制,更改 UIImageView(以编程方式)Swift 4/5
- scala - sbt 未能检测到新的 .scala 文件
- php - 如何在 PHP NTLM SOAP 中使用 MS Dynamics Nav Web 服务对结果进行排序?
- css - 为什么CSS看不懂打字?
- php - Laravel 响应给出不正确的代码 200 而不是 401
- java - 无法从链表类中删除第一个节点
- r - 通过 R 中的 phantomjs 下载多个 URL。如何遍历它们?
- python - 动态主题模型路径
- python - 在 python 中运行 Sqlite 给我 [HY000] 错误