我尝试了几种方法使其工作,但似乎没有简单的方法。是的,有大量的插件和配置。但截至2019年10月,它们无法正常工作。
因此,这似乎csharpers应该转到VS(或Rider),这是MS提出LSP的时候。您如何使IDE像nvim一样与C#一起使用?
基本上,客户端应该像这样启动服务器并使用LSP。
~/.cache/omnisharp-vim/omnisharp-roslyn/run -s <PATH TO SLN OR DIR>
答案 0 :(得分:2)
我刚完成omnisharp / ale的全新安装工作。您可能需要完全卸载omnisharp(~\AppData\Local\omnisharp-vim
或~/.omnisharp
),以防万一您有旧版本。
您没有提到您的操作系统;我在Windows 10和Mac OS上均可使用。如果您使用的是Mac OS,请确保先brew install libuv
。
首先,我使用vim-plug作为插件管理器来处理安装。我使用vim-plug的README文件中的bash / powershell片段将其安装在Windows和Mac OS上。
然后,我在vimrc中添加了以下内容(在Windows中为~\_vimrc
,在Mac OS中为~/.vimrc
):
"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.
的内容,然后按 Ctrl-x o :
上面的屏幕截图的底部带有vim-airline,它不是omnisharp的一部分,不是必需的。
上面的屏幕截图是Windows,但在Mac OS中也可以正常工作:
我的完整vimrc is available here和我正在使用is available here测试的源代码。
答案 1 :(得分: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