neovim/vim8的C#LSP自动完成客户端

neovim/vim8的C#LSP自动完成客户端,c#,vim,autocomplete,language-server-protocol,coc.nvim,C#,Vim,Autocomplete,Language Server Protocol,Coc.nvim,我试过几种方法使它工作,但似乎没有简单的方法。是的,有很多插件和配置。但按照2019年10月的标准,它们并不正常工作 客户机需要配置,它只包含C#,并且它列出了不再工作的插件集成(尝试在ALE中选择linting) 应该可以用,但它很大,而且看起来很臃肿 没有C#的源代码,我发现的配置已经过时 甚至没有列出C#和“非官方”配置有问题(如)。此外,Coc.nvim似乎是VS代码中的外星人 我没有找到合理的配置,似乎是因为需要.sln文件 所以这似乎是csharpers应该去VS(或Rider)

我试过几种方法使它工作,但似乎没有简单的方法。是的,有很多插件和配置。但按照2019年10月的标准,它们并不正常工作

  • 客户机需要配置,它只包含C#,并且它列出了不再工作的插件集成(尝试在ALE中选择linting)
  • 应该可以用,但它很大,而且看起来很臃肿
  • 没有C#的源代码,我发现的配置已经过时
  • 甚至没有列出C#和“非官方”配置有问题(如)。此外,Coc.nvim似乎是VS代码中的外星人
  • 我没有找到合理的配置,似乎是因为需要.sln文件
所以这似乎是csharpers应该去VS(或Rider),也就是MS提出LSP的时候。您如何使nvim中的IDE与C#配合使用

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

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

我刚刚让omnisharp/ale通过干净的安装成功运行。您可能希望完全卸载omnisharp(
~\AppData\Local\omnisharp vim
~/.omnisharp
),以防您有旧版本

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

我的环境
  • Windows 10(v1903)和Mac OS 10.14.6
  • Vim 8.1.2244
  • DotnetCore3.1——我希望3.0也能工作
说明书 首先,我使用插件管理器来处理安装。我使用vim plug自述文件中的bash/powershell代码段在Windows和Mac OS中安装了它

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

重新启动vim,然后运行
:PlugInstall
。它将为您克隆omnisharp和麦芽酒

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

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

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

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

要启动自动完成功能,请键入类似于控制台的内容。然后按Ctrl-x o:

上面的屏幕截图显示了底部栏——这不是omnisharp的一部分,也不是必需的

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


我的完整vimrc和我正在测试的源代码。

我刚刚让omnisharp/ale通过干净的安装成功运行。您可能希望完全卸载omnisharp(
~\AppData\Local\omnisharp vim
~/.omnisharp
),以防您有旧版本

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

我的环境
  • Windows 10(v1903)和Mac OS 10.14.6
  • Vim 8.1.2244
  • DotnetCore3.1——我希望3.0也能工作
说明书 首先,我使用插件管理器来处理安装。我使用vim plug自述文件中的bash/powershell代码段在Windows和Mac OS中安装了它

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

重新启动vim,然后运行
:PlugInstall
。它将为您克隆omnisharp和麦芽酒

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

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

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

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

要启动自动完成功能,请键入类似于控制台的内容。然后按Ctrl-x o:

上面的屏幕截图显示了底部栏——这不是omnisharp的一部分,也不是必需的

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


我的完整vimrc和我正在测试的源代码。

到目前为止,这里是我使用Deoplete、OmniSharp和ALE(完整配置位于):


到目前为止,这是我使用Deoplete、OmniSharp和ALE(完整配置)进行的设置:


是的,我最终得到了类似的配置。正如我在vim配置中看到的,您没有OmniSharp的便捷键配置(GoTo、Documentation、Hover等),所以它还没有完成。和你比较一下我们从t开始工作的地方
"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
" 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