ViEmu Blog

A blog about all things ViEmu
the one true editor
since 2005!

ViEmu/VS 2.2.9 ready – new installer and a couple fixes

May 25th, 2009

The fixes are quite minor:

  • The | motion with a count (go-to-column) was off by one compared to vim
  • Added :ern[ext] and :erp[revious] that map to VS’s View.NextError and View.PreviousError

But, apart from this, the main change is that the installer is based on an EXE file, which makes it work better with Vista and Windows 7 with UAC enabled. It will now ask for elevation when you start the installer. Here is a link to download it:

I won’t make the front page link to this new version until I’ve got some feedback, as I’m wary an EXE file may be more problematic than an MSI one.

I’ll be grateful for any feedback.

Next challenge: ViEmu for Visual Studio 2010. I’ve already started “playing around”.

.NET,  here I come.

ViEmu/VS 2.2.8 Released – Better Resharper support!

March 12th, 2009

I’ve just built & uploaded new version 2.2.8 of ViEmu for Visual Studio. Here is the link to download it, it will auto-upgrade any previous installation:

It brings two minor fixes and a hopefully very useful improvement:

  • It works better with LUA files when Visual Assist is present
  • It fixes the behavior of the motion “100%”, and  makes “{n}%” behave exactly like vim
  • And most importantly, it improves compatibility with Resharper. Read on if you use both ViEmu & R#!

The main complaint about ViEmu and Resharper interaction has always been what ViEmu does when using one of Resharper’s inline-mode features. When you issue a refactoring like “Rename” on a local variable, use one of the “Create class” / “Create method” / … refactorings, or when using a live template (type “for<tab>”), R# enters a special mode where you can edit the name of the highlighted element, while it changes all other instances too.

This is the problem: Resharper doesn’t know squat about ViEmu, insert and normal modes, and what have you. So ViEmu can stay in normal mode, while it should enter insert mode. Worse yet, since ViEmu auto-enters visual mode when it detects some external action has selected a range, it could enter visual mode, and ESC wouldn’t let you exit it (it would exit the inline mode).

Since as early as Resharper 1.x (around November 2005), I received reports of this from users of both Resharper and ViEmu, and added some provisions to ViEmu. The main way I did it was to detect and intercept the relevant R# commands (“Resharper.Rename”, etc…) and auto-enter insert mode. This was an acceptable fix sometimes, but it featured two shortcomings:

  • I had to add new commands to this code with each new version of Resharper, especially as the JetBrains guys are keen on renaming the commands in every release (“ResharperAddIn2003.Rename”, “ResharperAddIn2005.Rename”, “ResharperAddIn25.Rename”, “Resharper.Resharper_Rename”, etc…). This always had me on the losing end of the arms-race with them!
  • Some commands don’t use the VS mechanism (the red light bulb, etc…), so I couldn’t intercept them!
  • And finally, I couldn’t detect the moment the special “R#-inline” mode was exit! This meant you’d have to press Return to accept the changes, and then Esc to exit insert mode.

Well, finally I have implemented a new method that, although less elegant design-wise, works much better. I had tried this a few months earlier but was unable to make it work, but I finally got it to work properly. What I did? Since Resharper highlights in a special color the identifier you are editing, and since it uses VS’s marker mechanism to highlight it, I can check continuously whether any part of the buffer is highlighted with that marker (this is allowed by VS’s extensibility API). When I detect this marker is present, I make ViEmu auto-enter insert mode. The first great nice thing is that this supports *all* commands that use this mode, in all versions of R#, and in *all* versions of Visual Studio. And the second great nice thing is that I can detect when the mode is exit (no more  marker), and return to normal mode.  Hurrah!

I’d be happy to hear about how the R# interactions work for you with the new system! I hope to make ViEmu<->Resharper interaction still better in the future.

And there have been a couple of nice blog rants about ViEmu lately, one by Kyle Baley about R# interaction and another one by Tomas Restrepo about the actually very confusing keybinding configuration dialog. I’m hoping I can find time next week to respond to both, and some more time shortly to fix the actual underlying issues.

Finally, just wanted to let you know that I’m now neck-deep in Twitter, you can reach me there as @jonbho. It’s great to be in touch with so many customers and people whose thoughts I value!

I’m actually going to do my first release announcement via Twitter in a moment 🙂

PS:  This is actually the same interim 2.2.7.R#2 version I posted on the forums (at the bottom of, re-tagged 2.2.8. It’s been tested for a few days.

Request for comments: what should ViEmu/VS do with Ctrl-V upon installation?

March 3rd, 2009

When ViEmu/VS runs for the first time, it unbinds many keybindings from VS commands, so that they can be used for ViEmu in their vi/vim meaning: Ctrl-O to go back in position history rather than open a file, Ctrl-F to scroll down one pageful of text instead of bringing up the find dialog, etc…

There is one key which I leave bound to its usual meaning: Ctrl-V. In vim, this key starts the very useful block-visual mode, where you can select a rectangular region of text. In ViEmu, it can do this too, but since I thought removing the “Paste” binding of Ctrl-V could be too intrusive, it won’t work right out of the box after installing. Ctrl-Q is understood by ViEmu as an alternative, so you can always use that. Actually, I copied this behavior from gvim’s default keybindings on Windows.

I receive requests every so often from people who think that ViEmu doesn’t support block-visual mode, and it’s a bit sad to me. I’m considering adding Ctrl-V to the keys from which ViEmu removes keybindings upon installation. Of course, this could be confusing to other set of people: those who expect that Ctrl-V will keep pasting, and who will feel frustrated when they find it doesn’t.

So I thought, now that there are quite a few subscribers to the ViEmu blog, what better than to ask here to many actual users to see what they think?

Just to be totally clear, here is the question: do you think that ViEmu/VS should stay as is, leaving Ctrl-V bound to “Paste” upon install? Or do you think it should unbind its Paste meaning so that Ctrl-V will get ViEmu into block-visual mode right out of the box?

Thanks for your input!

ViEmu/VS 2.2.7 for better Visual Assist interaction

January 31st, 2009

I’ve uploaded version 2.2.7 of ViEmu for Visual Studio. The changes in this build only affect interactions with Visual Assist X. For their latest builds, VAX has started intercepting HTML and several XML file types (pure XML, XAML, etc…), in order to provide some of their features there. ViEmu had some provisions from the time they didn’t act on these file types, and I have adapted this provisions to the new situations. It’s necessary to follow these things closely for the best interoperation between ViEmu and Visual Assist (for example, only let VAX pop-up their autocompletion boxes on insert mode, etc…).

It’s possible you will need to have a recent version of Visual Assist X for the new ViEmu to work with it properly. I’ve tested it with a few VAX builds and it works at least equally well for somewhat recent versions, and, for HTML/XML editing, the best is if you use VAX 1707 or later (VAX will enhance editing there).

This ViEmu (and future ones) may not work at all with old versions of VAX. I wouldn’t like to have ViEmu act differently with different VAX releases. For one, I don’t know how to get the build number, they don’t show it in Help|About which would be somewhat accessible. But mainly, having a version-number hack to decide which hacks to turn on and off starts to look too hackish and too much effort for the pay off.  Upgrading to the latest VAX version would fix it. This said, ifyou are stuck with an older version of VAX, you can write to me and try convincing me that I should invest the time to fix this.

Here’s the link to download it:

You needn’t uninstall the previous version, this will auto-upgrade your installation automatically.

I tested this on VS.NET 2003, VS 2005 and VS 2008, with and without VAX, it shouldn’t be problematic for anything else

ViEmu/SQL 2.2.7, fixing SQL Server 2008 compatibility

August 30th, 2008

It seems Microsoft changed something between their last preview releases and the final, RTM build of SQL Server 2008, and this broke ViEmu/SQL 2008. Technically, I was QueryInterface’ing the provided application object pointer for a DTE interface, which works for SQL Server 2005 and the preview builds of SQL Server 2008, but didn’t work (returned null) for the final build of SQL Server 2008 Management Studio. I found an alternate method to get to the DTE object: the AddInInstance object has a get_DTE() method which returns the sought-after DTE object. I changed this, checked it to work on both SQL Server 2008 and SQL Server 2005, and built 2.2.7 fixing this. Here is the link to download it:

This will automatically upgrade your existing installation if there is one.

Happy ViEmu’ing!

Official Announcement – ViEmu 2.2 for VS, SQL, and 1.5 for Word&Outlook

August 26th, 2008

[I sent this email out last week to all current ViEmu and Codekana users, announcing the latest releases and outlining my plans for the near future. If you didn’t receive it but would like to receive future ones (they are few and far between), drop me a line. — Jon]

Hello everyone,

It’s a long time I hadn’t sent out an email to all ViEmu and Codekana customers. Finally, new versions of all the ViEmus are ready, and I thought this would warrant an email. The new versions are 2.2 for Visual Studio, 2.2 for SQL Server too, and 1.5 for Word&Outlook, and you can download them straight from the web site front page
(, or from the links below:

ViEmu/Visual Studio —
ViEmu/SQL Server —
ViEmu/Word&Outlook —

You don’t need to uninstall your current version before installing these ones, they will automatically upgrade any previous installation. By the way, I’ve revamped the build system, and now even minor revisions (of the form 2.2.x) include automatic upgrading. No more manual uninstalling necessary for any revision.

These builds have been tested over the last few weeks by hundreds of people now (it’s been the official download from the home page for over two weeks), so they are very reliable and should not cause any trouble. Just drop me a line if anything acts up.

The major new features are i’/a’/i”/a” text-object motions that allow you to operate on strings, gt/gT to navigate tabs, gp/gP for variations on regular pasting, and several more minor points. Also very important, these versions consolidate all fixes and improvements from 2.1.0 to 2.1.27 revisions in the VS/SQL line, and 1.0.1 to 1.0.25 revisions in the Word&Outlook line. You can check all changes in the release notes:

ViEmu/VS 2.2 —
ViEmu/SQL 2.2 —
ViEmu/W&O 1.5 —

In the past few months, I have set up two new blogs, one ViEmu-specific and the other one Codekana-specific, where I post about every little improvement and minor revision. If you are a regular ViEmu and/or Codekana user, you can subscribe in order to stay informed of the latest news on each product:

This is nicer than sending out emails for every little change, and still allows me to communicate improvements efficiently to those interested.

I thought I’d also detail my plans for the near- to mid-term future, so that you know what ViEmu and Codekana are up to.

First thing, I will be concentrating in Codekana development for some time. I’d like to implement some new features, improve the website, and release a new 1.5 version of this product, which I want to turn into an
indispensable tool for serious development with Visual Studio in the mid-term. There’s a lot of work ahead, but there are many exciting features that are waiting in the roster.

After this is ready, I plan to work in ViEmu versions 2.5 for VS and SQL Server, and 2.0 for Word&Outlook. These versions will implement a new licensing system, mainly due to pirate key-generators being widely available out there, and installing them will require you to log in to a new customer area and download a new license key. I want to provide a nice line-up of features that will make the upgrade well worth the hassle of downloading the key. Codekana will also see some similar treatment.

Finally, ViEmu 3 is the next goal, for which there are many very useful and interesting features planned. The major new feature I want to provide is scriptability. Even in the vi/vim editing world, there are many small variations on how different people want their vi to behave, and often it just doesn’t make sense for me to implement every little variant. A scripting system will allow customization to your own taste, and allow everyone to improve it. I plan to offer some way for people to share scripts and that will also make it a much more valuable tool. The scripting language will be a javascript-like little language. I considered other options too: VS’s internal scripting, which I don’t want to use as it wouldn’t work in SQL Server, Word and Outlook, and other possible hosts; vim’s viml scripting language, which is very complex and I really dislike; and Python, which would be nice, but would make me use the Python interpreter — this would add complexity I don’t want to have in a tightly-controlled C++ codebase.

It’s also my plan to make ViEmu 3 the first version to carry a small upgrade fee for those who bought over a year before its release. This won’t be more than a small fraction of the full license price, and I want this version to provide plenty of value so that it will justify the extra fee. If not interested in the new features, you will of course be able to keep on using ViEmu 2 for as long as you want.

I’ve also been slowly advancing in the research of the technology that will power my yet-to-be-released, stand-alone text editor, Kodumi, and which will also see its way into Codekana and possibly ViEmu. This is a mid- to long-term effort, involving a completely new programming language and VM, but I hope the results will really pay off in the end. I’ll keep you updated when there are any news.

All in all, there are a lot of exciting improvements ahead, and I hope that you will find ViEmu and Codekana more and more useful in your day-to-day work as I can implement more and better features.

As always, I will be glad to hear any feedback, suggestions, bug-reports, or your thoughts about anything else. Feel free to drop me a line.

Thanks and best regards,

NGEDIT Software

ViEmu/VS and /SQL 2.2.6

August 4th, 2008

[This was posted in August, but it was in the wrong location. I’ve just moved it over here to the right place. Apologies if it shows up anew on your feed reader. – Jon, December 1st ’08]

Just fixed a couple minor glitches with the respective installers, and added one check to ViEmu/VS’s runtime (to avoid certain race condition that has actually never happened, but who knows, may happen some day – I discovered this in the code shared with Codekana):

They’ll automatically upgrade your current install if there is one.

New versions officially released: 2.2 for VS and SQL, 1.5 for Word & Outlook

August 1st, 2008

If you go to the front page (, you will see that ViEmu/VS and ViEmu/SQL 2.2, together with ViEmu/Word&Outlook 1.5, have become the official downloads of each product.

You can read the release notes for each here:

ViEmu/VS 2.2 release notes –

ViEmu/SQL 2.2 release notes –

ViEmu/Word&Outlook 1.5 release notes –

They have been tested for weeks, so I’m quite confident on them not causing any major problem.

I’ve also changed the way the download links work. Now they direct to an .msi file without a version number, and the server redirects it to the latest stable version (with the full file name: for example ViEmuVS-2.2.5.msi). That way you know what version you are downloading. Let me know if this causes any trouble.

In a few days, I will send out an email to all existing cutomers notifying the release.

ViEmu for Word and Outlook 1.5 Release Candidate

July 31st, 2008

I have uploaded ViEmu/Word&Outlook 1.5.1, which is the Release Candidate for the 1.5 version:

No need to uninstall previous versions before installing this one, it will upgrade the existing version automatically.

This version has a couple of typos fixed in the documentation and uses a new, more reliable method to set up the image of the “Settings” button (nothing you will notice, except that it won’t trash your clipboard the first time it’s run).

If nothing comes up, this will become the official build on the website in a couple of days, and I will send out an email announcing it afterwards.

Let me know if anything acts up.

2.2 release candidates: ViEmu/VS and /SQL 2.2.5

July 30th, 2008

After fixing all the outstanding issues, builds 2.2.5 of ViEmu/VS and ViEmu/SQL are available for public testing. These are the actual release candidates, and unless something critical comes up, I will be releasing them officially before the end of the week:



The issues I fixed are the following:

  • ViEmu/VS: RETURN in normal mode could insert a line break when editing C# triple-slash comments in the presence of Resharper
  • ViEmu/VS: The ‘clashing keybindings found’ dialog would pop up on start-up if ViEmu had been disabled, and that dialog would auto-reenable ViEmu
  • VS & SQL: Exiting insert mode could cause weird behavior afterwards
  • VS & SQL: Fixed a couple of typos in the documentation

I’m also planning to upload a ViEmu/Word&Outlook 1.5.1 today or tomorrow and be able to release that officially before the end of the week.

Thanks for all the feedback! All this testing for weeks really helps ViEmu have the smoothest new-release experience.


ViEmu: vi/vim emulation for Visual Studio, Word, Outlook and SQL Server:
See where ViEmu customers are around the world:
Map of ViEmu customers around the world
Hear what others are saying about ViEmu:
ViEmu testimonials
Learn vi/vim easily with this cheat-sheet and tutorial:
Vi/vim Cheat Sheet and Tutorial
Read why vi/vim editing is the killerest:
Why vi/vim editing?
Discover ViEmu's sister product, Codekana:
Codekana outliner and syntax highlighter