* hlsearch-------------ViEmu will highlight all matches of the latest search in the currentbuffer... invaluable. When you switch to another buffer, it willalso be scanned. If you're handling huge files, it may impactperformance, so you can disable it with :set nohlsearch or inTools|Option|ViEmu.

* Proper vim-like visual area representation----------------------------------------------------ViEmu 1.x used Visual Studio's selection to represent the selectedvisual mode area. This had limitations, such as not being able to showthe cursor inside the selection (which happens often in visual-linesmode). ViEmu 2.0 uses custom text markers to faithfully emulate howvisual selection looks in vim. Much clearer. Anyway, it can be turnedoff if you need to preserve the previous behavior.

* Proper undo-grouping of operations----------------------------------------------------Many actions in ViEmu 1.x were not grouped for undo in the same way asin vim. For example, issuing a 'cw' and then typing some text pluspresing <Esc> would be undone in two steps: one for the erasing of theword, and another one for the typing. If the typing involved newlines,there would be even more steps. This was necessary becauseIntellisense doesn't allow regular undo-group wrappers around itsactions. ViEmu 2.0 uses a more ellaborate mechanism to group undoactions, which allows proper grouping of any operation. You can seethe markers ViEmu inserts in the undo queue as '---', and u/^R willuse those to determine which actions to undo.

* Proper Intellisense-autocompleted input repetition-------------------------------------------------------Typing some text and then repeating it (most often with '.', but alsopossibly with a count prepended to the input command or using I or Ain visual-block mode) would not work fine if you had used Intellisensein the input session. This is because Intellisense input does not gothrough standard input mechanisms. ViEmu 2.0 watches the changes madeto the buffer to Intellisense and then deduces what sequence of typingbest emulates what has been done. This results in faithful repetitionof Intellisense completed input. Since the actions of each language'sIntellisense are different and can be pretty weird, especially for VB,there might be some case in which it doesn't work fine - please let meknow about the specific case so that I can fix it. It's been testedextensively with C++, VB.NET, C# and J#. I am aware that it doesn'twork great with HTML (automatic closing tags), I plan to address itin a future release, please let me know if it is very urgent to you.

* Automatic VS keybinding management-------------------------------------------------------Any keybinding assigned through Visual Studio's Tools|Options|Keyboardmechanism is invisible to ViEmu, as Visual Studio 'swallows' the keypress message before even dispatching it to the editor's window.ViEmu 1.x required manually removing keybindings clashing withstandard vi/vim commands. Now, ViEmu 2.0 will scan the keyboardassignments the first time it is run, and remove them itself. It willalso remember them, so that they can be restored when ViEmu isdisabled by using <Ctrl-Shift-Alt-V> or through the preferences page.There is a keyboard manager accessible from Tools|Options|ViEmu ->Keyboard that allows you to configure the behavior, clear the list,rescan the assignments, configure which vi/vim keybindindings areconsidered for clashes, etc...

* Advanced mapping support -------------------------------------------------------ViEmu 1.x had very minimal single-character-to-single-charactermapping support. ViEmu 2.0 implements all of vim's mapping optionswith the single exception of multiple-key-chords on the left handside. As an example, you can map <C-N> and <C-P> in command-lineediting mode to act as the up and down arrows:

:cmap <c-n> <down> :cmap <c-p> <up>

You can use 'c-', 's-' and 'a-' for Ctrl, Shift and Alt, or anycombination thereof. The documentation has all the details on thesupported contexts, etc...

* Buffer number commands-------------------------------------------------------ViEmu 2.0 keeps the list of buffers it has been exposed to and assignsnumbers to them, in the same way as vim. You can use :ls to list thebuffers, :b[uffer] {N} to go to a given buffer, and:bn[ext]/:bp[revious] to navigate the buffers in this order.

* Proper wordwrapping support, better and faster folding support-------------------------------------------------------Several actions in ViEmu 1.x didn't act well with word wrapping turnedon: <C-E>/<C-Y>, H/M/L, etc... these all work great in ViEmu 2.0, andthere is also an option in Tools|Options|ViEmu to turn on"Windows-like wrapped text navigation", so that j/k move up and downwithin wrapped pieces of the same line. Folding support has also beenimproved, being much faster when working with large files (it couldbecome a bit slow in ViEmu 1.x), and with proper representation forall visual submodes (both for wrapped text and for folded text).

* Better incremental search, works also in visual mode-------------------------------------------------------The new incremental search uses a separate custom text marker, so itis visible even in visual mode.

* Macros stored in regular registers-------------------------------------------------------Macro registers were separate from regular registers in previousversions. In ViEmu 2.0, macros recorded with 'q' are stored in andplayed from the regular text registers. You can record a macro andpaste it with "xp to see the keystrokes, or yank some text fromanywhere and play it with @.

* Proper autoindent when repeating input-------------------------------------------------------As a result of the undo-grouping and the smart-Intellisense-sensingbehavior, now input which includes newlines will be properly repeatedanywhere with newly-calculated smart-indenting behavior.

Re: ViEmu 2.0 finally available

Hello snt,

Thanks for reporting this. gS was actually added very late in the 2.0 cycle, to ease compatibility with other add-ins. I will fix that and let you know as soon as it is working fine (ie, not doing anything in normal mode).

Best regards and thanks for taking the time to let me know about this,

Re: ViEmu 2.0 finally available

snt,

I have fixed the gS crash, together with a few :s misbehaviors, and uploaded 2.0.24 (just download the latest version from download.html to get it, the filename is still ViEmu20.msi). It's necessary to manually uninstall the previous 2.0 version before installing this one.

Re: ViEmu 2.0 finally available

Re: ViEmu 2.0 finally available

Just noticed 2.0 was out, and installed it.

Only used for 30 mins so far, but I really love that C-f and C-b are "proper" now. Much easier to follow the scrolling somehow. Of course, Intellisense working is fantastic too. I'll have to unlearn _not_ pushing enter when I'm going to use '.', since I had to not do that in the old versions though. :)

One minor bug that I believe is new in going from 1.4x to 2.0 (could be wrong, might just never have noticed before). The "sticky" horizontal cursor position isn't updated when changing the cursor position with the mouse. So, if I'm in the middle of a line, I can move up and down with j/k, and the cursor correctly either goes to the end of the line, or the old horizontal position. But, if I click on another line at a different horizontal position, and then move up and down, the sticky position is the last horizontal position that I moved using vi-type movement commands.

Overall seems like a nice step forward. I'll start pimping to friends more often now. :)

scott

(PS. I wrote a free little addin for VS2005 called VsWhiz that complements ViEmu. It's an Incremental File Open dialog, which I bind to Ctrl-Enter when using ViEmu. Check it out at http://h4ck3r.net/)

Re: ViEmu 2.0 finally available

Scott, thanks a lot for the kind comments. I will look into the "desired cursor col" problems and let you know as soon as I have a fix. Thanks for reporting about it, and I'll certainly have a look at VsWhiz!