The result
C# code completion and other rich editing features in Vim.
The high level steps
Details of these steps are in the OmniSharp-Vim repository. The steps are non-trivial. For each step I've provided a way to answer, "Is this step done?"
Install pathogen.vim. Done? Add execute pathogen#infect()
to the top of your vimrc
and run Vim without errors.
Install omnisharp-vim. Done? Run msbuild
from ~/vimfiles/bundles/omnisharp-vim/server
without errors.
Install Python. Done? Run :echo has('python')
from within Vim and receive a return value of 1
.
Install vim-dispatch. Done? Run :dispatch
from Vim without errors.
Install syntastic. Done? Run :Helptags
from Vim without errors.
Install CtrlP. Done? Run :CtrlP
from Vim without errors.
Sanity check
The installation is complete if all of the above steps are done and dir ~/vimfiles/bundle
outputs this:
ctrlp.vim
omnisharp-vim
syntastic
vim-dispatch
Configure Vim to use Roslyn
Add the following to the top of your vimrc.
let g:OmniSharp_server_type = 'roslyn'
let g:OmniSharp_prefer_global_sln = 1
let g:OmniSharp_timeout = 10
It tells Vim's OmniSharp to use Roslyn, to look for a global.json instead of a sln file, and to wait 10 seconds for the sometimes slow OmniSharp service to respond.
Vim should now provide a rich editing experience when we open a *.cs file inside a .NET Core solution. The problem is that it requires one more difficult step: troubleshooting.
Pattern not found
When we open a *.cs file with Vim, running Ctrl + X + Ctrl + O is supposed to provide completions; instead, we received the following error:
-- Omni completion (^O^N^P) Pattern not found
We were able to work around that by updating the OmniSharp-Roslyn submodule...
cd ~\vimfiles\bundle\omnisharp-vim\omnisharp-roslyn
git checkout dev
build.ps1
Updating the submodule was necessary, because omnisharp-roslyn\artifacts
did not initially exist. That was because the build.ps1
script failed, which was due to a missing xunit.runner.utility.desktop.dll
assembly. Happily, the great and wise Dustin Campbell had made a fixing PR seven days ago, which we were able to checkout from dev
.
If the above is not working, try starting OmniSharp-Roslyn manually as follows:
cd ~\vimfiles\bundle\omnisharp-vim\omnisharp-roslyn
Omnisharp -p 2000 -s C:\temp
This is the content of our C:\temp
directory, which contains a dotnet new
project, which we created with a dotnet --version
of 1.0.0-rc3-004530
, and to which we added a valid global.json file.
bin
obj
global.json
Program.cs
temp.csproj
FAQs
Where is my vimrc? Run :scriptnames
or :echo $MYVIMRC
or :help vimrc
to view its path. Often the location is ~/_vimrc
.
Where are my vimfiles? Run :scriptnames
or help vimfiles
and look for the PC-related help section. Often the location is ~/vimfiles/
.
Why is this so hard? That's the Vim way.