Open Source.NET

Write Faster Code by Adding VIM to Visual Studio

VIM is a text editor with a Visual Studio extension. Its time-saving power is well worth the learning curve.

One of the greatest productivity gains you can make is to type less and navigate through your code faster. VsVim, written by JaredParsons, is an extension for Visual Studio 2010 and later which will get you doing just that. To get VsVim, you can download it from the Visual Studio Gallery or via the extension manager in Visual Studio. Mastering VsVim takes an investment of time, but learning it will pay dividends.

As the name suggests, VsVim is based on the functionality of the VIM text editor. VIM isn't something picked up as easily as Notepad; it's a powerful tool with a high initial learning curve. This makes it no different than many tools we use every day.

Multiple Modes
VIM has multiple modes:

  • The Insert mode is most like what Visual Studio users are used to: typing enters text and the modifier keys can be used to execute commands
  • Normal mode is the main operating mode, and is used for navigation and text manipulation
  • Visual mode is used for navigating and manipulating selections of text

I recommend going through the built-in tutorial to become familiar with the basic modes and commands. To open the tutorial, go to Start Menu/All Programs/Vim 7.3/Vim tutor.

VsVim brings the tremendous power of VIM to Visual Studio. Once you get past the initial learning curve and start using the basic features, you'll be editing code faster than ever before.

VIM uses commands that build on one another. Commands combine actions and movements. For example, 'd' is for delete and 'e' means move to the end of the word. If you type 'de' it will delete from your cursor to the end of the word. You can use 'w' as well, which takes you to the beginning of the next word (thus, 'dw' will delete from your current location to the beginning of the next word, including whitespace separating words). The curly braces '{' and '}' take you to the beginning of the previous and next paragraph (or block of code).

You can also use numbers combined with movement. The 'hjkl' keys are used for movements: left, down, up, and right. If you want to move down 15 lines, type '15j'. To move three methods down, type '3}'.

Simpler Searching
Everything flows from these conventions. VsVim also includes part of VIM search capabilities. When in normal mode, type '/' followed by what you're looking for and press Enter.

A simple example of relocating a method:

  • Start with your cursor at or before the current method
  • Press 'v' to enter visual mode (used for selected ranges of text)
  • Press '}' to move past this block of text (end of the method)
  • Press 'd' to delete (cut)
  • Press '{' twice to move up two methods
  • Press 'p' to paste the method

To start learning VsVim (and VIM), don't start with empty documents. Print off a cheat sheet with commands and read a couple of articles on VIM. Then start programming with VIM. If you don't know how to do something, look it up, execute the command, and try to use it again.

The motto for learning VIM could be "Repetitio est mater studiorum (repetition is the mother of study)". You'll build muscle memory and subconsciously start navigating your code without having to think about the commands. Once you get 20 to 30 commands into your workflow, you'll be well on your way to being a much more effective typist (and faster programmer).

In addition to all this, you still get IntelliSense, tab completion, snippets and all other base Visual Studio features when in insert mode. There's built in support for key binding collisions, enabling you to choose if VsVim or Visual Studio itself will handle the shortcuts; just click the options button in the bottom right of your code file. If you need to exit VsVim, you can temporarily disable (and restore) it by pressing Ctrl+Shift+F12.

I've barely scratched the surface of VsVim and VIM's capabilities. To expand your knowledge, I've provided some resources below. Take a look at videos online of people using VIM, and experiment for yourself. Think, before you reach for your mouse: Can you do it much faster from your keyboard?

VIM Resources

About the Author

Ian Davis is the Master Code Ninja for software architecture and development consulting firm IntelliTechture. A C# MVP, Davis is an expert on the .NET Tramework and co-organizer of the Spokane .NET User Group who frequently speaks at industry events. He spends most of his free time as an open source author and advocate, publishing and working on many open source projects.

comments powered by Disqus


  • Uno Platform Ports Windows Calculator to Linux

    Uno Platform has ported the famed Windows Calculator, open sourced last year, to Linux as part of a continuing "proof point" effort to demonstrate the reach of what it describes as the sole UI offering available to target Windows, WebAssembly, iOS, macOS, Android and Linux with single-codebase applications coded in C# and XAML.

  • ASP.NET Core OData 8 Preview Supports .NET 5, but with Breaking Changes

    ASP.NET Core OData, which debuted in July 2018, is out in a v8.0 preview that for the first time supports the upcoming .NET 5 milestone release.

  • VS Code Java Team Details 5 Best Dev Practices

    Microsoft's Visual Studio Code team for Java development added a new Coding Pack for Java installer and detailed best practices for setting up a development environment.

  • Binary Classification Using PyTorch: Defining a Network

    Dr. James McCaffrey of Microsoft Research tackles how to define a network in the second of a series of four articles that present a complete end-to-end production-quality example of binary classification using a PyTorch neural network, including a full Python code sample and data files.

  • Blazor Debugging Boosted in .NET 5 RC 2

    In highlighting updates to ASP.NET Core in the just-launched second and final Release Candidate of .NET 5, Microsoft pointed out better debugging for Blazor, the red-hot project that allows for C# coding of web projects.

Upcoming Events