VIM emulation layer for Visual Studio

(174) Review
Visual Studio
2013, 2012, 2010
Download (192,193)
E-mail Twitter del.icio.us Digg Facebook
Add to favorites
Reviews (174)
Q and A (198)
Sign in to write a review
Sort by:

by byte1918 | July 22 2014

It's the first extension I install in Visual Studio. It's a must have if you ever liked working with VIM. Thank you Jared. Awesome!

by Nathan Friend | July 08 2014

Very impressive extension.

by Matthew199 | July 03 2014

Simply fantastic, how have I gone so long not knowing this even existed! Thank you so much...

by Vinod Pankajakshan | June 27 2014

Vimming in Visual studio is simply mind boggling.. thank you for making this happen Jared Parsons.

by Porges | June 19 2014

by feverforce | June 12 2014

Awesome tool! Can't use VS without it.

by Iain Ballard | June 09 2014

One of the best Visual Studio extensions available. Along with R#, it's one of those "Wouldn't use Visual Studio without it" add-ons.

by Galen Elias | May 24 2014

This is extremely well done, I can hardly tell I'm not in Vim. Would be nice to have a bit more configurability, but overall this is great!

by Joe Egan | May 20 2014

This is always the first Visual Studio extension I install - could not imagine working in Visual Studio without it. VsVim is rock-solid and simply allows me to edit code more quickly.

For the uninitiated (or the Vi-traumatized):

1) It does not take comprehensive knowledge of Vi(m) commands to be much more productive with this extension (or Vi(m) generally). Basic Vi commands (http://www.cs.colostate.edu/helpdocs/vi.html) pack a lot of punch.
2) Yes, I am quite familiar with comparable Windows keyboard shortcuts for many things I do Vi-style using VsVim - and find myself seamlessly interleaving them with Vi(m) commands; TMTOWDI; but Vi is everywhere (including Visual Studio thanks to this awesome extension) and reduces reaches for my mouse and contortion on my keyboard more than anything else I have tried over 20+ years of nerdery.

Highly recommended!

by HoangITK | May 16 2014

I love it!

by Z Sun | May 13 2014

Very cool plugin, definitely made Vim users more productive in Visual Studio.

by Matt Winegar | May 07 2014

Sure, maybe I am using the wrong name for the feature (its really just renaming, not refactoring). In VS, if you highlight (select) a variable name, on the declaration, and type over it with a new name, an icon appears that you can click on to open a menu that says "Rename <old name> to <new name>". Then if you click that, VS updates all of the references to this variable to the new name.

Also, you mentioned C#, which I haven't tried this in. I noticed this in VB, which is what most of the code I am working with is written in. This is not resharper or a similar plugin, as I do not have these for VS 2013 (still vanilla on that).

I don't have to do the renames that often, so I can work around for now by temporarily disabling the plugin and re-enabling when done, with VS restarts. I wouldn't do this for small local variables, but for properties, etc. of classes that are referenced multiple places, this might still be the quickest way, as a workaround.

JaredPar MSFT May 07 2014
| Edit |

Ah, I didn't think about trying that in VB. I've played around with it a bit and I have a theory about why the rename refactor doesn't get hooked up after a select + edit. Going to look into this

by Thumbmunkey | May 07 2014

by Mateusz Stepniak | May 02 2014

Let the Vim force be with you
- in Visual Studio too!

by Martin Rykfors | April 23 2014

I really enjoy using this plugin and the author is doing a superb job maintaining it and responding to bug reports. A great opportunity to learn Vim!

by bumblebeeman | April 22 2014

by ovalsquare | April 11 2014


by Pål Fossmo | April 10 2014

by mwbrady68 | April 05 2014

by James Hart - LegacyTech | April 01 2014

Well done Jared! Now I feel right at home - you saved me a lot of frustration.

1 - 20 of 174 Items   
Sign in to start a discussion

  • VS' convert-tabs-to-spaces setting not honoured
    2 Posts | Last post February 22, 2014
    • VS has the option to replace tabs with a configurable number of spaces (Tools>Options>Text Editor>All Languages>Tabs, also configurable per file type). VsVim doesn't seem to honour this setting. Any chance of getting this included?
    • VsVim does support honoring this.  It just prefers settings from the _vimrc file over the Visual Studio default if it finds a _vimrc.  Here is a link that details how to get VsVim to respect Visual Studio over vim defaults for all settings 
  • "Vap" selects one line too much
    2 Posts | Last post February 20, 2014
    • normally i simply "Vap" for selecting the current paragraph (incl the blank line)
      but vsvim also selects the first line of the following paragraph.
      i guess that's not intended behaviour
    • Thanks for reporting this! This is a known issue that we are tracking as issue #788 
  • <C-r> in command mode doesn't work
    3 Posts | Last post February 18, 2014
    • I'd like to use registers in command mode, e.g.:
      but VsVim doesn't seem to support that functionality at all.
    • This is a known issue that is being tracked by bug #551.  Hoping to get this into one of the next versions
    • ah, nice to know :)
      thanks for the fast reply (as always)
  • replace word by buffer contents
    6 Posts | Last post February 13, 2014
    • i don't seem to be able to bring any of this bindings to work:
      so what i currently do is 'yiw' on the source and 'ciw<C-r>0' on the target.
      but since i cant even repeat the change/paste via '.' my fingers hurt after the third occurence :)
      is there a (more) painless way to do so?
    • What behavior is incorrect on the repeat?  Is it not pasting the contents in? 
    • before: firstWord secondWord thirdWord
      'yiw' on first-^
      'ciw<C-r>0' on second-v
      after: firstWord firstWord thirdWord
      '.' on the third does nothing-^
    • Okay I gotcha now.  I was able to reproduce this on my machine.  I filed the following bug to track the problem 
    • i've seen you've got a pull request on that issue :)
    • Yeah, richsladkey just happened to be fixing some bugs in that area so he was able to fix that really fast.  It will be in the next release :) 
  • Go to start/end of method
    2 Posts | Last post February 11, 2014
    • Great plugin! Use it every day.
      I was looking for a fast way to navigate between C# method declarations, and found the Vim commands ]m and [m. They don't seem to be in VsVim. or am I missing something?
    • [{ and ]} are implemented, and are pretty handy.  Repeated [{ will navigate to the top of the containing code block, so that might be an easy way to get to the beginning of the containing method.
  • AutoCmd support?
    3 Posts | Last post February 11, 2014
    • Hello,
      This works as expected in gVim:
      au FocusLost,TabLeave * call feedkeys("\<C-\>\<C-n>")
      After I added it to my _vsvimrc (in my 'home' folder, C:\Users\hxchba), it seemed to have no effect.
      Is there a 'VsVim' way to get the desired functionality?
      Thanks for providing us with VsVim and making VisualStudio much more useful...
    • Never mind, just found this:  https://github.com/jaredpar/VsVim/wiki/AutoCmd-support
    • FWIW, none of these seem to work:
      au BufWinLeave * call feedkeys("\<C-\>\<C-n>")
      au BufWinLeave * stopinsert
      au BufEnter * stopinsert
  • insert current correct intendation
    6 Posts | Last post January 30, 2014
    • i'm facing the same thing as this guy: http://stackoverflow.com/questions/3718026/vim-indent-current-blank-line-and-insert 
      but none of the 'standard'-vim solutions seem to work for vsvim...
      am i really stuck spamming C-t in insert-mode?
      any suggestions?
    • I'm actually baffled at why the accepted answer works.  When I try that on gVim it doesn't indent the value but instead stays at column 0.  Is there a particular setting I need to get `S` to indent to the column of the line above?
    • S	substitute entire line - deletes line, enters insertion mode
      at least i can imagine how it's supposed to work when autoindent is set... :)
    • I tried that with `ai` set and it's not working.  Essentially I created a file with a line shifted over by a tab, put the cursor below that line in normal mode, hit S and the caret stays at column 0 
    • it surely works here..:
      * freebsd 10.0
      * https://github.com/amix/vimrc
      * vim & gvim
      ~ fire up (g)vim
      :set filetype=c
      ~ write this (whereas _ denotes cursor):
      ~ press ESC and then S - you end up with:
    • It may be a language specific item then.  I'll look into that 
  • Expand folds when jumping to line
    5 Posts | Last post January 30, 2014
    • Hi Jared,
      Minor feature request. 
      When you use visual studio's "Go To Line" dialog (double-click on the line number label in the status bar at the bottom), it will expand folded code if the target line is contained there, then position the caret on the appropriate line.
      VsVim does not do this and seems to stop on the outermost fold containing the target line (e.g. if a fold covers lines 5 to 100 and you do ':20<CR>' to go to line 20, the caret will go to the beginning of the fold at line 5 and stay there). If the fold has been expanded, it will jump to the target line as desired.
      Thanks in advance,
    • VsVim does this because it is the behavior of gVim.  Is there a setting in gVim that will cause it to expand the fold when you use :<number> to jump to a line? 
    • http://stackoverflow.com/questions/10451427/automatically-expand-fold-when-going-to-a-line-number
    • I see! I have never tried using folds in gVim (I edit mainly plain text files there and they are short).
      So what do you usually do when there's a clash between what VS does and what gVim does? In this case I hope the VS behaviour wins (or perhaps a setting could be provided to allow people to choose)!
    • Whenever the action involves cursor movement or placement I take gVim over Visual Studio.  The reason being that most vim guys intuitively know where a given key stroke will take them.  Doing actions like expanding the outlining would break say a jump followed by a yank.  I get lots of negative feedback whenever I break cursor movement even, and sometimes especially, when it is subtle.
      In general though it's not a problem because gVim has a setting that toggles between the behavior.  I can just implement that and hence give people a work around.  I'm trying to determine if there is such a setting here that I can just implement 
  • Designer and report editor
    4 Posts | Last post January 23, 2014
    • Could you add an option or disable VSvim while in report designer from reporting services, also in design mode of webpages would be good sometimes to have ctrl-v because "p" does not work in there :)
      keep up the great work, this extension rocks.
    • I'm not really familiar with the reporting services editor that you are referring to.  Could you tell me how to get to it so I could better judge how to behave there?
    • Hello thank you for the reply, it's included in  the SQL data tools http://msdn.microsoft.com/en-us/data/tools.aspx
      this is the type of project http://i.technet.microsoft.com/dynimg/IC574428.gif
      anyway for now I just remap the orignal ctrl-v so I can paste stuff in designer mode of aspx design view, for the report editor I have to disable plugin due to key stroke strange behavior
    • actualy in this last vers 1.5 only arrows keys advance two spaces in command mode for expression editor, but using "hjkl" it's fine. So it's all good :D
  • Tab to move down auto complete
    13 Posts | Last post January 22, 2014
    • Hi guys just started using vsvim, is there any way to assign tab as the "Down Arrow" equivalent for moving down the list for auto/word completion? 
    • it should be possible to make this work by mapping Tab to Down in insert mode (small bug that needs to be fixed though).  But this would mean that every occurence of Tab would move the key down.  Is that the feature you are looking for? 
    • This sounds like it would move the cursor down when typing, sadly I use tab to indent into lines. Ahwell was a nice thought.
      I do however have another question. I created a _vsvimrc file in my home directory to remap hjkl keys to jkl; using the nnoremap command for each key. Everything works nicely appart from now ; moves the cursor two character to the right instead of one. Is this a bug or can I specify how many characters are moved on the keypress? 
      Sorry for the long question
    • No problem on the long question.  Can you post your _vsvimrc somewhere that I can take a look at it?  Also do you have any other extensions installed?  It's possible one of them is interferring here and causing the double behavior.  
    • I have extensions for git, sql server and a comment spell checker but the problem still occurs with these disabled. Here is a dropbox link to the _vsvimrc file 
    • Thanks for the vsvimrc file.  I will take a look at that
    • I look forward to what hearing about what you find
    • hello.
      I have this issue but only on reporting services 2012 reports editor (it uses VS2010), for example while editing an expression. But on normal VS2010 projects it's ok.
    • I'm aware of some issues with the report editor. They intercept key strokes in a mom standard way and I'm working on a fix for those issues. This could be related 
    • Any ideas on what might cause my problem?, I should have mentioned im using Visual Studio 2012, thanks again
    • Sorry for the delay, I just debugged into it today and figured out what is going wrong.  The issue is that there is a single space after the 'l' character on the 'nnoremap ; l ' line.  This means that when you hit ';' it runs the key sequence 'l<Space>' which causes the cursor to generally speaking go right twice.  
      This is strangely enough the behavior that gVim displays.  It considers any trailing white space on the line to be part of the mapping
    • Arg, soooo sorry for this I never noticed 
    • Not a problem.  It's *really* subtle.  I actually had to bring up VsVim in a debugger to see what was going on.  
31 - 40 of 198 Items