2

我已经尝试了几种方法来使它工作,但似乎没有简单的方法。是的,有大量的插件和配置。但根据 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>
4

2 回答 2

7

我刚刚通过全新安装成功地使用了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可在此处获得,我正在测试的源代码可在此处获得

于 2019-11-08T16:32:49.530 回答
0

到目前为止,这是我使用 Deoplete、OmniSharp 和 ALE 的设置(完整配置位于https://github.com/artkpv/dotfiles/blob/master/.config/nvim/vimrc):

" Install Deoplete and OmniSharp:
" - OmniSharp/omnisharp-vim    " for LSP support (like start OmniSharp server) and code actions, etc
" - Shougo/deoplete.nvim       " for better autocompletion
" - dense-analysis/ale         " for highlights

function SetCSSettings()

    " Use deoplete.
    call deoplete#enable()

    " Use smartcase.
    call deoplete#custom#option('smart_case', v:true)

    " Use OmniSharp-vim omnifunc 
    call deoplete#custom#source('omni', 'functions', { 'cs':  'OmniSharp#Complete' })

    " Set how Deoplete filters omnifunc output.
    call deoplete#custom#var('omni', 'input_patterns', {
        \ 'cs': '[^. *\t]\.\w*',
        \})

    " ... then goes your mappings for :OmniSharp* functions, see its doc
endfunction

augroup csharp_commands
    autocmd!

    " Use smartcase.
    " call deoplete#custom#option('smart_case', v:true) 
    autocmd FileType cs call SetCSSettings()

augroup END
于 2019-12-18T14:34:20.270 回答