In order to start the journey with VIM for .NET you need to set up the environment and get all the plugins. There is no all-in-one standalone package thus you need to prepare it by yourself. I suggest the following configuration:
1. Install VIM
Install the newest package from (full installation minus “visual studio add-in”):
It is not so trivial as going to VIM homepage and clicking download. Vim.org contains a default compilation of vim for Windows, but compilations differ from each other significantly. VIM for Windows is distributed as GVIM which is a classic VIM for terminal + VIM wrapped up in dedicated window frame and mouse support. Both can be precompiled with different set of features (over 100), like Lua language support, Python intergration, Perl, Ruby etc. Some of these are very important (especially Python). Vim.org copy contains GVIM compiled with Python/Python3, but classic VIM not. That’s why I recommend to download the brew from here (full installation minus “visual studio add-in”): https://sourceforge.net/projects/cream/files/Vim/
2. Install Python 2.7.x
Most of vim extensions are written using Python language (including our most wanted Omnisharp). In order to use it, you need to install Python. Still the most common version is not 3.x but 2.7.x. It is vital to choose the right architecture (x86 vs x64) – it must be same as VIM.
After installing it, you should be able to run
":py print 'hello world'"
3. Install pathogen-vim
curl -LSso .\autoload\pathogen.vim https://tpo.pe/pathogen.vim
filetype plugin indent on
(you can run
":e $MYVIMRC" in VIM)
Vim is so powerful because of its extensibility. In order to use the full power of it you need a good plugin loader. Pathogen-vim automatically scans
/vimfiles and loads plugins. This is a prerequisite for most of other plugins
4. Install Omnisharp-vim
git clone https://github.com/OmniSharp/omnisharp-vim.git
git submodule update --init --recursive
If (msbuild is not found, add
"C:\Windows\Microsoft.NET\Framework64\v4.0.30319" to your
Omnisharp is a tools that analyze the solution and provides metadata for our project. It’s like external Resharper engine (run as console application listenning on http). This is used to add syntax checking of our project, autocomplete, code actions and many more. In order to connect it with VIM you need a wrapper and here we have
5. Install vim-dispatch
git clone git://github.com/tpope/vim-dispatch.git
It’s a plugin that automatically starts OmniSharp server when you open *.cs file. Without it you would have to run :OmniSharpStartServer manually.
6. Install syntastic
git clone https://github.com/scrooloose/syntastic.git
It is something like Resharper icons next to the code (describing errors, warnings, hints, suggestions).
7. Install CtrlP
git clone https://github.com/ctrlpvim/ctrlp.vim.git
Together with omnisharp it provides support to contextual actions, go-to-everything, buffer explorer (go to previous file) etc
8. Install NERDTree
git clone https://github.com/scrooloose/nerdtree.git
“Solution” tree for VIM. Very useful as there is no default alternative (you would have to go to selected file with CtrlP or command line).
9. Install yeoman
npm install -g yo
yo install csharp-cli-app generator
It creates files/projects from template (with online template browser). There are several .NET templates as well. It’s a must for fron-end developers, but VS devs already have built in “add new” wizard (although yeoman has better support from community).
10. Install vim-snipmate
git clone https://github.com/tomtom/tlib_vim.git
git clone https://github.com/MarcWeber/vim-addon-mw-utils.git
git clone https://github.com/garbas/vim-snipmate.git
It helps to create useful code snippets – similar to
"prop", "for", "class", "wl" etc.
11. Configure _vimrc
All of the plugins above can be adjusted manually using
_vimrc file. You can do this on your own or use some sample file, like mine.
There’s a plenty of steps, but I’d bet it’s less time consuming than installation of Visual Studio.