Vim emulation layer for Xamarin Studio / Visual Studio for Mac

XSVim Gitter Build Status


Interact with Visual Studio for Mac as follows:

Visual Studio -> Extensions -> Gallery -> IDE Extensions -> "VIM" -> Install

Then close the current document that you are working on and open a new document to activate the plugin.

What works?

Most Vim commands should work. If you see something that doesn't work, please file an issue. There's a good chance that I just don't know about it.

What doesn't work

  • Vim split windows. XSVim uses VS for Mac's side by side mode to emulate this, but it's only possible to have 2 vertical split windows. <C-w>s and <C-w>v both switch to side by side mode.
  • Visual block mode works for most tasks, but there are some differences in the way that VS handles virtual spacing at the end of lines.
  • Selecting text with the mouse or using cmd+arrow keys doesn't switch to Visual mode
  • No leader key support or configurable key bindings.

Why don't the control keys work?

Some Vim keybindings (such as Ctrl-F, Ctrl-D etc) conflict with VS's own built in keybindings. However, there is a keybinding scheme included that you may apply if you want (Visual Studio + Vim)



  • gd - Goto declaration
  • gu - Find usages
  • gb - Go to base symbol
  • gh - Show tooltip at current caret location (Go Hover)
  • hjkl support on the Solution Explorer pad and Test Explorer pad. Pressing <esc> on these will switch focus back to the last editor window. This feature does not yet work on the Search Results pad.
  • Insert mode escape binding. See example screenshot to see how to configure jj to escape when in insert mode.

Insert mode escape screenshot

Looking for the latest release?

Check the release page as there is usually a more recent version of the addin here than on the Visual Studio for Mac feed. Grab the .mpack file and install it via Visual Studio -> Extensions -> Install from file

Support & Contributions

Jump in our Gitter channel and introduce yourself.

With thanks to

  • @shirshov
  • @mdizzy
  • @tdfacer