This seems to be a part of a nascent trend in IDEs. There's vrapper and eclim for eclipse, Vintage for Sublime Text, and now this as well.
I've seen a lot of arguments about how people don't use IDEs because vim/emacs are better, and I always felt they were misguided. I see the feature sets of vim/emacs and your common IDE as nearly disjoint sets, and I couldn't be happier to see the good parts of the two editors being joined with the power of the IDE.
IDEs are terrible text editors. Text editors are terrible IDEs. I can't wait until people figure out how to graft good text editors and good IDEs together.
One way to do that is to provide IDE functionality as an external service to the text editor. There's a Scala editing package for Emacs called Ensime that uses the Scala presentation compiler, a service that runs in the background. Every time Ensime is asked to colorize code, provide code completion, or jump to the definition of a symbol, it asks the presentation compiler, which gives it the right answers. No half-assed guessing; it actually runs the relevant compiler passes and provides correct information.
Another way to do it might be to embed a real text editor (not just a crappy emulation mode) into an IDE somehow. I think that's what I would prefer. Emulation modes in IDEs will always be playing catch-up, and power users of a Emacs or vim shouldn't have to maintain a mental catalog of which features have been emulated and which haven't. I don't know how it would work, though, and I don't know of anyone working on it.
I'm still having trouble seeing the value of an IDE.
When programming, all I'm doing is editing text and occasionally running an external program. what does an IDE have that makes it so valuable?
(Honest question! I've used IDEs in the past - MSVC, Eclipse, NetBeans, Anjuta, Code::Blocks, and several others - and found that the generally poor editors made it more difficult to program.)
Even better, there are vim keybinding plugins for just about everything - Chrome, Chromium, Firefox, Opera (if it's updated now, not sure). Even Emacs (vimpulse). Combined with IDE plugins like eclim you can set up a single unified key interface to almost everything you do on a computer.
That's largely my thought. I love Vim, and it's occasionally frustrating when VsVim doesn't cover a corner case; but the functionality of VS with ReSharper means that for .net code I'll put up with it.
Wow, vrapper is what I've always wanted. Thanks for posting this. Its always amazing to me when some part of someones comment really changes my daily development. This is one of those times!
It's got some serious bugs that make my heart stop.
The biggest one is Undo. Looks like the plugin keeps it's own list of modifications that were performed. So when sometimes I press "u" to undo the latest change - Visual Studio gets suspended for a minute or two, and all my changes that I did since I opened Visual Studio (could be a day or a week) are pretty much gone. The work around is to close the file without saving.
Hopefully stuff like this will get fixed now that the project is accepting contributions from other developers. There was a point where his employment agreement prevented such from happening.
What version of VsVim are you using? There was a bug with this exact behavior in 1.1 (and possibly 1.1.1). I got it fixed for the 1.2 release which is the current version in the Visual Studio gallery.
My development work is a polyglot split across Linux, Mac and Windows/.NET projects. I also use both Vim and Vim keyboard bindings (in other editors) on Unix.
Whilst I prefer *nix, when I have to use Visual Studio, I use the VsVim plugin, and it's a real pleasure to be able to seamlessly move between platforms and development environments, IDEs and text editors in this way.
Not only do I love VsVim, but it significantly reduces the friction of using Visual Studio, and even adds some enjoyment to coding on that platform. VsVim is F# under the hood too (which shouldn't matter to the user, but it _is_ kinda cool).
Putting the standard key bindings for vi is one thing, but without being able to customize it like vim, it's almost worthless to me. The custom bindings I have set are there to do common operations, and they become an integral part of my vim.
I use this daily in VS2010, and have used ViEmu in previous VS versions.
Generally, I like it, but it can be a bit sluggish at times. The only plugin I have running is JSLint, so I suspect it's VSVim causing the problems (though it only generally bogs down when I leave VS2010 for a bit). The keybindings work as one would expect. As I mentioned in a different thread, I wish it could break out of the tabbed window convention of VS and use buffers.
ViEmu did feel a bit faster (and was less prone to crashing).
I can chime in as I just purchased ViEmu. It's really wonderful to have all the Vim bindings present in studio (and the rest of Office!). I haven't noticed any speed issues and I haven't noticed bugs (yet), but I've only been using now daily for two weeks and I haven't installed any plugins for it.
This is very off-topic, but I am turned off by the URL. Is Microsoft obsessed with UUID? First, they have you use UUID to reference COM components. And now in URL? Next you will see them ask their own employees to use UUID as email addresses.
If there's anyone out there comfortable in both the way of vi and the way of Emacs, does this feel better than the Emacs emulation [1]? I'd love to be able to work with text more efficiently in Visual Studio, but the Emacs emulation feels only half way there.
[1] http://visualstudiogallery.msdn.microsoft.com/09dc58c4-6f47-...
i used to use the emacs emulation and i agree with you, it only felt halfway. Also, Jared seems way more responsive than the emacs people. i filed a few bug reports and saw few status updates or general updates. After feeling frustrated with that and the half-baked feel i switched to Vim and found VsVim. i've been really happy and havent looked back.
Funny, I actually cloned this repo last night to contribute. I really want to contribute because it's so useful and @jaredpar seems to be doing a shit ton of work all by himself. But the whole F# part is going to be a hurdle.
Isn't Eclim the other way around? I thought it would include features from Eclipse in Vim rather than bringing key Vim keybindings to Eclipse. There are several plugins for the latter though, like Vrapper[0] or ViPlugin[1]. There were also attempts to integrate a whole native Vim instance into eclipse[2].
[+] [-] johnfn|14 years ago|reply
I've seen a lot of arguments about how people don't use IDEs because vim/emacs are better, and I always felt they were misguided. I see the feature sets of vim/emacs and your common IDE as nearly disjoint sets, and I couldn't be happier to see the good parts of the two editors being joined with the power of the IDE.
[+] [-] dkarl|14 years ago|reply
One way to do that is to provide IDE functionality as an external service to the text editor. There's a Scala editing package for Emacs called Ensime that uses the Scala presentation compiler, a service that runs in the background. Every time Ensime is asked to colorize code, provide code completion, or jump to the definition of a symbol, it asks the presentation compiler, which gives it the right answers. No half-assed guessing; it actually runs the relevant compiler passes and provides correct information.
Another way to do it might be to embed a real text editor (not just a crappy emulation mode) into an IDE somehow. I think that's what I would prefer. Emulation modes in IDEs will always be playing catch-up, and power users of a Emacs or vim shouldn't have to maintain a mental catalog of which features have been emulated and which haven't. I don't know how it would work, though, and I don't know of anyone working on it.
[+] [-] greyfade|14 years ago|reply
When programming, all I'm doing is editing text and occasionally running an external program. what does an IDE have that makes it so valuable?
(Honest question! I've used IDEs in the past - MSVC, Eclipse, NetBeans, Anjuta, Code::Blocks, and several others - and found that the generally poor editors made it more difficult to program.)
[+] [-] sho_hn|14 years ago|reply
[+] [-] SkyMarshal|14 years ago|reply
[+] [-] mmavnn|14 years ago|reply
[+] [-] campnic|14 years ago|reply
[+] [-] Stasyan|14 years ago|reply
It's got some serious bugs that make my heart stop.
The biggest one is Undo. Looks like the plugin keeps it's own list of modifications that were performed. So when sometimes I press "u" to undo the latest change - Visual Studio gets suspended for a minute or two, and all my changes that I did since I opened Visual Studio (could be a day or a week) are pretty much gone. The work around is to close the file without saving.
[+] [-] palish|14 years ago|reply
I've been a happy ViEmu customer for... Hmm... Three years? Maybe a little longer. Anyway, it's just perfect.
[+] [-] diab0lic|14 years ago|reply
[+] [-] jaredpar|14 years ago|reply
Bug Details: https://github.com/jaredpar/VsVim/issues/672
[+] [-] scott_to_s|14 years ago|reply
Whilst I prefer *nix, when I have to use Visual Studio, I use the VsVim plugin, and it's a real pleasure to be able to seamlessly move between platforms and development environments, IDEs and text editors in this way.
Not only do I love VsVim, but it significantly reduces the friction of using Visual Studio, and even adds some enjoyment to coding on that platform. VsVim is F# under the hood too (which shouldn't matter to the user, but it _is_ kinda cool).
Thoroughly recommended!
[+] [-] paul-woolcock|14 years ago|reply
[+] [-] mmavnn|14 years ago|reply
[+] [-] bmj|14 years ago|reply
[1] Yes, you can survive without the IDE if you are doing .NET development.
[+] [-] jta|14 years ago|reply
[+] [-] bmj|14 years ago|reply
Generally, I like it, but it can be a bit sluggish at times. The only plugin I have running is JSLint, so I suspect it's VSVim causing the problems (though it only generally bogs down when I leave VS2010 for a bit). The keybindings work as one would expect. As I mentioned in a different thread, I wish it could break out of the tabbed window convention of VS and use buffers.
ViEmu did feel a bit faster (and was less prone to crashing).
[+] [-] llimllib|14 years ago|reply
[+] [-] mikecaron|14 years ago|reply
[+] [-] palish|14 years ago|reply
[+] [-] zargon|14 years ago|reply
[+] [-] eddieplan9|14 years ago|reply
[+] [-] germano|14 years ago|reply
[+] [-] jugglingnutcase|14 years ago|reply
[+] [-] smhinsey|14 years ago|reply
[+] [-] tkellogg|14 years ago|reply
[+] [-] jugglingnutcase|14 years ago|reply
i recently screwed up the breakpoints though... now they're pink.
[+] [-] jcfrei|14 years ago|reply
[+] [-] ch0wn|14 years ago|reply
[0] http://vrapper.sourceforge.net/home/
[1] http://www.viplugin.com/viplugin/
[2] http://sourceforge.net/projects/vimplugin/
[+] [-] drKarl|14 years ago|reply