news rss



0.42.0 Released

It seems springtime brought some new life for Vrapper development after such a slow winter. 0.42.0 has been released and just look at the list of changes made in the last month (included in 0.42.0):

  • Added new plugin for exchange.vim port
  • Added support for 'gvimargs' property
    • Defines args sent to 'gvimpath' for use by :vim command
    • Uses placeholder strings {line}, {col}, and {file}
    • Defaults to: +{line} -c normal zv{col}| -c set nobackup -f -n {file}
  • Added support for 'ad hoc delimiter' m<char>
    • Based on a Vim patch which has not yet been merged into Vim
    • Google Groups discussion
    • Use m<char> with i/a to match strings delimited by any arbitrary <char>
    • For example, 'vim*' will select (in VisualMode) the text between two '*' characters
    • **Modified methodtextobj.vim plugin to use 'f' rather than 'm' to avoid this collision**
  • Added support for '(insert) VISUAL' mode
    • Highlighting text while in InsertMode moves into '(insert) VISUAL' mode for a single visual operation, then returns to InsertMode
  • Added support for ':let @<char>=' to set register contents via command-line
    • Using ':let' ONLY supports setting registers right now
  • Added ability to map '|' character using '<BAR>'
  • Fixed issue with Vrapper not re-initializing when Eclipse re-uses editors
    • For the "Close editors automatically" feature in Eclipse
  • Fixed issue with :eclipseaction from command-line of an editor
  • Fixed issue with :eclipseaction being defined statically for all editors
  • Fixed issue with :surround command in Surround.vim plugin
  • Fixed issue with mappings which use '<' or '>' character
  • Fixed issue with search strings that end in a backslash
  • Fixed issue where :t/:move/:copy were requiring a space after the command (which Vim doesn't require)
  • Fixed issue with map and noremap not including omap
  • Fixed issue with cursor position when exiting visual line mode
  • Fixed issue swapping between beginning and end of a visual selection when Windows line-endings are present
  • Fixed issue where having a visual selection, moving into command-line mode, then hitting <ESC> didn't clear the selection
  • Fixed issue where executing a macro wasn't a single undo-able operation
  • Fixed issue with visually selecting the last character in a file
  • Fixed display issue when restoring a reversed selection
  • Refactored how text objects are defined to better support plugins

I occasionally like to include some shameless self-congratulation when releasing a new version. I searched Twitter for 'Vrapper' and here are some of my favorite tweets about Vrapper. Thank you for all the love!

‏@RobertFischer: Installed Vrapper and rebooted Eclipse. The skies opened opened up, angels sang, a tear came to my eye. IDE Heaven.

@bigtbigtbigt: Just discovered Vrapper for Eclipse after a long session of coding (I'm new to @EclipseFdn). I am in heaven!

@yottamoto: Just discovered the vrapper VI plugin for eclipse ( ). Now, my day is made, And possibly, the rest of my days also.

@NicolasBrailo: Vrapper: a real text editor for Eclipse

@jmaicher: How could I have used eclipse without vrapper (vim-like editing in Eclipse)? Awesome tool, it just works! <3

@mojavelinux: OMG, my dev environment is complete! Just discovered vrapper, a *lightweight* vim mode for all #Eclipse editors


Updates to unstable update site

It's been another slow month but I might as well give an update with the changes to the unstable update site since 0.40.0 released:

  • Added support for '@:' to repeat last command-line command
  • Added support for ':marks' command
  • Added support for ':reg[isters]' command
  • Fixed issue with 'gv' after modifying lines
  • Fixed issue with visual mode editing at the end of a file

0.40.0 Released

0.40.0 has been released. This release is smaller than most but I'm keeping with my two-month release cycle one more time. The following changes were added since the last status update and are included in 0.40.0:

  • Created new optional plugin for clang-format
  • Added support for ':y[ank] [x]' to yank into register
  • Added support for 'iskeyword' property
  • Added support for ':xa[ll]'
  • Added support for 'startnormalmode' property
    • When true, always start in NormalMode after changing tabs
  • Fixed issue with ';' after 'T'
  • Fixed \c and \C in substitution definitions
  • Fixed issue where <S-Space> wasn't being recognized

I'd like to thank all the contributors who continue keeping this project going even when I'm too busy to spend time with it myself. Your dedication helps keep this project alive!


Updates to unstable update site

As I mentioned in my last post, real life has been getting in the way of me spending time with Vrapper. The holidays certainly didn't help things either. This was a slow month for Vrapper but here's your monthly status update. The following changes have been made to the unstable update site:

  • Added support for 'omap' commands
  • Added support for :tabs command
  • Added support for '[[', ']]', '[]', and ']['
  • Fixed issue with 'O' near a blank line with Windows line-endings
  • Fixed issue using counts with mapped keys

I'll probably still release 0.40.0 in a month but after that I might relax my two-month release cycle to be whenever a release is worthwhile.


0.38.0 Released

Still sticking with our two-month release cycle, 0.38.0 is now released. Changes since the last status update (included in 0.38.0) are:

  • Added :set contentassistmode
    • Enables <c-n> and <c-p> in content-assist dropdown
    • Use camap to map <c-n> or <c-p> to other keys
  • Added :startinsert command
  • Added 'method text object' optional plugin
  • Fixed issue with chaining vi{i{i{
  • Fixed autocmd when changing tabs
  • Fixed v%
  • Fixed 'dw' on last word of a line with Windows line endings
  • Fixed Alt key handling on keyboards with AltGr
  • Fixed issue with newlines when pasting text

Real life has been getting in the way recently, preventing me from spending time with Vrapper. I'll do my best to stay on top of defects and feature requests but I'm afraid I might not be able to continue releasing every two months. Or at least, the amount of changes in a given two-month period might not be enough to justify a release. We'll see how it goes.


Updates to unstable update site

It's time for your monthly status update on Vrapper. Here are the current changes on the unstable update site. Please feel free to install the latest build on the unstable update site and let us know if you find any defects.

  • Fixed issue where escaped characters were being skipped with t/f motions
  • Fixed issue with visual block mode starting on an empty line
  • Fixed autocmd on multi-page editors (like XML Editor)
  • Fixed Ctrl+I in NormalMode (and added TAB in NormalMode for the same operation)
  • Added eclipseuiaction for mapping any Eclipse operation that pops up a dialog
  • Added support for [m, ]m, [M, and ]M
  • Added support for :setlocal command
  • Added support for shiftround setting
**Changes in behavior**
The following changes modify existing behavior from previous versions of Vrapper:
  • Refactored >> and << to use shiftwidth, tabstop, expandtab, and shiftround settings rather than using Eclipse's settings
  • Enable regexsearch property by default. This matches Vim behavior more closely.

0.36.0 Released

In keeping with our two-month release cycle, I have released Vrapper version 0.36.0. There weren't too many changes from last month and they were almost entirely bug fixes. The changes since the last status update (included in 0.36.0) are:

  • Fixed repetition of delimited text
  • Fixed replace mode in macros
  • Fixed Ctrl-H (for backspace) in InsertMode
  • Fixed '\t' in substitution replace
  • Fixed numpad 'return' mapping to 'enter'
  • Fixed incsearch
  • Added support for C pre-processor conditionals with '%'
    • #if, #ifdef, #else, #elif, #endif

If you run into any issues with this release, please file an issue on our GitHub project:
I'm not sure how much testing our unstable update site really gets since we had to rush out a 0.34.1 with the last release. I'm hoping that doesn't happen again but Vrapper just gets more features and not everything is covered by our unit tests. Fortunately we have a constantly growing userbase that helps us find those obscure defects. Thank you for all your support and keeping Vrapper alive!


Updates to unstable update site

Time for another monthly status update on Vrapper. Our last release added a lot of new features so this last month has been mostly defect fixing. The occasional new feature or two has been added though. The unstable update site currently includes the following changes from 0.34.1:

  • Fixed issue with 'S', 'cc', 'Vs', and 'Vc' on the last line of a file
  • Fixed issue where ':source' couldn't handle absolute paths
  • Fixed ':eclipseaction!'
  • Fixed Ctrl-R in command-line mode
  • Fixed issue where substitution 'c' confirm would match on a replace
  • Fixed issue with 'i_ctrl-o' followed by ':<command>'
  • Fixed visual block selection on the last line of a file
  • Fixed visual block selection with horizontally scrolled view
  • Added support for 'i_ctrl-t' and 'i_ctrl-d'
  • Added support for 'g~'
  • Added support for '!' in NormalMode
  • Added support for pipe '|' to chain commands
  • Added support for ':move' and ':copy' without a line range definition
  • Added support for `:split <filename>` in Split Editor plugin
  • Refactored sticky column handling
  • Refactored newline handling when pasting text
  • Refactored function keys (F1-F20) mapping
  • Refactored key handling of certain Ctrl keys

There are still plenty more defects and feature requests to address but I'm constantly amazed by how much we get done each month. I guess I'm just shocked that a Vim plugin for Eclipse requires monthly status updates and a 2-month release cycle. But, it seems we're doing something right, we've had over 1,500 installs via the Eclipse Marketplace for two months in a row!


0.34.1 Released

I released 0.34.0 last week and a number of people found defects. One defect in particular (where the cursor would disappear on Linux systems) was major enough to warrant a new release. I've released 0.34.1 with that defect fixed along with a couple others. Changes between 0.34.0 and 0.34.1 are:

  • Fixed issue on Linux systems where cursor would disappear during horizontal movements
  • Fixed issue where <C-[> was ignored
  • Fixed issue where :sort was ignoring selections
  • Fixed 'last insert mark' at the end of a file
  • Fixed HOME and END behavior

I apologize to anyone that was frustrated by these defects after upgrading to 0.34.0. It seems the unstable update site isn't being tested as much as I'd hoped. I may have to introduce some concept of a 'release candidate update site' which isn't updated as often as unstable but provides our users who don't want an "unstable" build to play with new builds before I declare them "stable".


0.34.0 Released

As I mentioned in my previous post, this is a big release for us. This release adds support for the three most-requested features in Vrapper:

  • Split Editor commands (:split, :vplit) via optional plugin
  • Visual Block Mode
  • Confirm 'c' flag in substitutions

There are plenty of other feature requests we can work on but those are the big three that I've heard from the most people. Visual Block Mode still has some quirks moving beyond line endings and dealing with tabs but it should be usable at this point. In addition to those three features, here are the following changes since the last post (included in 0.34.0):

  • Added 'cleanindent' option to control whether auto-indent introduced with 'o' should be cleaned up if no text is entered on the new line
  • Added support for '\=@x' in substitutions to replace with register contents
  • Added support for 'vS' and 'vgS' in Surround Plugin
  • Fixed behavior with AltGr on German keyboards
  • Fixed issue with using arrow keys in mappings
  • Other miscellaneous defect fixes

I hope everyone continues to enjoy Vrapper, thank you for all your support!


Updates to unstable update site

It's time for your monthly status update on Vrapper. When I released 0.32.0 last month I mentioned that I received a lot of help from contributors who really knew what they were doing (way more than I do). Those same contributors have been extremely productive this month to the point that I feel like I've been relegated to a Project Manager position. Just look at what they've accomplished in this last month:

  • Add support for 'gv' and 'gi' commands
  • Add support for marks: '< '> '[ '] '^
  • Add support for global marks (A-Z and 0-9)
  • Add support for Ctrl+O while in InsertMode
    • Perform a single NormalMode command then return to InsertMode
  • Add support for Ctrl+U in InsertMode
  • Add support for Ctrl+X-Ctrl+L sentence completion in InsertMode
  • Add support for Ctrl+U in CommandLineMode
  • Add support for Ctrl+Y in CommandLineMode
  • Add support for :! and :r! to execute a shell command
  • Add support for line ranges when using eclipseaction commands
  • Add support for parameters with eclipseaction commands
    • eclipseaction sc org.eclipse.ui.views.showView(org.eclipse.ui.views.showView.viewId
  • Add support for 'autocmd' in .vrapperrc for editor-specific bindings
    • autocmd "C/C++ Editor" eclipseaction gv
    • au "CMake Editor" nnoremap <CR> gf
  • Add support for pasting to CommandLineMode with Ctrl+V
    • (*without* unbinding Paste from Eclipse!)
  • Add configurable option 'exitlinkmode' to disable Vrapper's attempt to exit to NormalMode after Eclipse performs certain text operations
  • Add support for custom surround definitions in our Surround Plugin
  • Introduce new Split Editor Plugin
    • :split, :vsplit, :wincmd, Ctrl+w commands, etc.
    • Requires Eclipse 4 (sorry Eclipse 3.x users)
  • Introduce new Plugin for port of argtextobj.vim
  • Incremental improvements on cursor motion within our still-unstable VisualBlockMode
  • Whole mess of miscellaneous defect fixes

That's a lot of changes in a single month and I haven't been able to spend time with each new feature. It may take some extra testing to make sure nothing fell through the cracks. Anyway, if this next month is anything like the last month then 0.34.0 is looking to be a HUGE release for us.


0.32.0 Released

Keeping with my two-month release cycle, 0.32.0 is now out. In the last month I got a lot of help from contributors who actually know how to navigate the Eclipse API. They were able to fix a bunch of defects which I had no hope of ever fixing myself. I'm amazed at what they've been able to do already.

These are the changes since the last news update (included in 0.32.0):

  • Added support for new ipmotion (improved paragraph) optional plugin
  • Added support for XML tags in our Surround.vim optional plugin
  • Added support for :tabrewind and :tablast
  • Fixed issues with :only and :qall
  • Fixed <number>gt
  • Fixed issue where :q didn't work with some file types
  • Miscellaneous minor fixes to text object parsing and visual line selections

Also... Don't tell anyone, but we've started implementing visual block mode. The cursor doesn't always move correctly and it doesn't support 'y' or 'p' yet but it is there. It isn't stable so don't expect too much from it though. We hope to have the feature ready in the next release.


Updates to unstable update site

I've hit my stride with a two-month release cycle so I'm also trying to make a habit of posting status updates once a month. In addition to the usual requests for more Vim features, in the last month I received a couple requests for features which aren't in Vim but our users wanted anyway.

The unstable update site currently has the following changes:

  • Add support for '\c' and '\C' in search to temporarily override ignorecase setting
  • Add support for '_' motion
  • Add support for ':e!' to revert file
  • Add support for "0-"9 and "- delete and yank registers
  • Add support for ':maximize' command to maximize editor area
  • Add support for ':copy' and ':move' operations
    • Useful with line range operations ':10,20 copy 140'
  • Add support for ':vim' command
    • Launches current file in gvim (so you can do things Vrapper doesn't support)
    • After saving and quitting gvim, Eclipse will reload the file
    • Path to gvim is defined by 'gvimpath' property (defaults to /usr/bin/gvim)
  • Refactored XML text object parsing to be more compliant with Vim

0.30.0 Released

Looks like I'm hitting my stride with a two-month release cycle. 0.30.0 is released and ready for use. There were only a few changes since my last update which were included in this release:

  • Added support for :retab operation
  • Added support for partial command-line names
    • e.g., :tabprev, :tabpre, :tabpr, etc. all work now
  • Reimplemented paragraph text objects to match Vim's behavior

The partial command-line names work pretty well as long as there isn't a name collision. For example, ':tabne' could be ':tabnew' or ':tabnext'. Vim has some way to define precedence but Vrapper will just fail when this happens. I think the current solution should work in most cases but there will be a couple places where you may still need to be explicit with the name. Either way, this is an improvement over the previous implementation which required me to explicitly define every partial name supported. Now I only need to explicitly define the collisions like ':tabn' going to ':tabnext'.

Also, as I mentioned in my previous post, there was a lot of code submitted by contributors this release. I'm glad people are willing to help me out and constantly improve Vrapper. Thank you for helping to keep this project alive!


More updates to unstable update site

It's been over a month since my last update so I decided to look through our commit log and see what we've been working on lately. Here is the list of changes to the unstable update site since my last news post:

  • Added support for '**' in path variable
    • e.g., :set path=src/main/java/**
    • Tells :find to search all subdirectories for a filename
  • Added support for :source
    • You can now "source .vimrc" in your .vrapperrc
  • Added support for 'cursorline' option
    • enable/disable highlighting line with cursor
  • Create new file when ":e <filename>" doesn't exist
  • Added support for :tabonly (alias of :only)
  • Added support for :tabf (alias of :find)
  • Allow '+' to be omitted in line range operations
    • ".5" == ".+5"
  • Fixed behavior with quote text objects to match Vim's behavior
    • ci" will only look for quotes on current line now
  • Fixed issue with escaping delimiter character in substitution
  • Fixed a couple defects in sentence motions, paragraph motions, and joining multiple lines

I've received a lot of help from contributors in this last month, which makes me feel like things are moving quickly. I still think a two-month release cycle works well for us though, so I'll probably wait until the end of March to release this next version.


Updates to unstable update site

When I released 0.28.0 a couple days ago I mentioned that I wanted to release it mostly because I had a pile of feature requests I was itching to work on. Well, it's less than a week later and I've already got a bunch of new features available on the unstable update site. They are:

  • Add support for '(' and ')' sentence motions
  • Add support for Shift key in mappings '<S-' (e.g., <S-Left>)
  • Add support for Alt (meta) key in mappings '<A-' and '<M-' (e.g., <A-x>)
  • Add support for 'g;' and 'g,' to traverse changelist
  • Add support for `` to jump to last cursor position
    • Similar to '' to jump to last line position
  • Fix issue where modifying text above a mark would offset that mark's position
    • Mark positions should now stay accurate as the document changes

It's been a productive couple of days.


0.28.0 Released

The code stayed relatively idle for the last couple weeks so I'm releasing 0.28.0. It includes all the changes listed in the previous news post along with a few other minor changes:

  • Added support for :bd, :bp, :bn, and :ls
  • Added basic support for 'g;'
    • Only goes to previous edit location, no change lists
  • Fixed off-by-one issue with cursor position after exiting VisualMode

We have a pile of new feature requests that I'm itching to work on so I wanted to get 0.28.0 out into the world before I start making some destabilizing changes.

Finally, I like to use my release announcements to include a little bit of shameless self-congratulation. Vrapper has gone 7 consecutive months with 800+ installs via the Eclipse Marketplace in each month! There have been a couple months where we almost cracked 1,000 installs in a single month but it hasn't happened yet. This means Vrapper is holding its place at #50 for installs across all 1,500 Eclipse plugins available via the Marketplace! I think that's pretty impressive.


Updates to Unstable Update Site

I've received a lot of help from a contributor in the last couple weeks so a lot of minor features have been added as he learns the code. I'm hoping to release the next stable version at the end of January since it appears I've hit my stride with a two-month release cycle.

The unstable update site has been updated with the following changes since 0.26.1:

  • Added optional PyDev plugin for Python Vrapper users
  • Added support for <C-a> and <C-x> increment/decrement operations
  • Added support for :only
  • Added support for :tabnext and :tabprevious
  • Added support for :tabnew (invokes Eclipse's New File dialog)
  • Added support for :update (performs :w)
  • Added support for :ascii and 'ga'
  • Added support for :qall and :wqall
    • This throws a benign NullPointerException which I can't figure out
  • Added basic support for :sort
    • supports '!', 'i', 'n', 'x', 'o', 'u' flags
    • supports /pattern/ with strings only (no regex)
  • Shift+Insert will now paste clipboard contents in CommandLineMode
  • Fixed problem with multi-character operations whose first character was also used in a mapping

As with all Ctrl key bindings in Vrapper, you have to unbind those keys in Eclipse first for Vrapper to receive them. The same is true of Shift+Insert since Eclipse has a mapping for that too.


Experimental Optional PyDev Plugin Created

Vrapper has a couple optional plugins to provide support for some Vim commands which require knowledge of the underlying programming language. So far, we only had plugins for Java (JDT) and C/C++ (CDT). I realized today that it would be trivial to create an optional plugin for PyDev support and a couple people might actually appreciate it. So I've created an optional PyDev Vrapper plugin and tossed it up on the unstable update site for testing.

The PyDev plugin only provides a couple extra commands (similar to our JDT and CDT plugins):

  • Ctrl+], gd, gD = Go To Declaration
  • gR = Rename Element
  • gc<text object> = Toggle Comment
  • gcc = Toggle Comment (current line)
  • gc also works in visual mode

So there you have it. Not a whole lot of extra features but some people might find use for them while writing Python. Give it a try and hopefully it will become stable enough to include in the next release of Vrapper!


0.26.1 Rushed out the door

I released 0.26.0 last week but today I found a defect re-introduced that a lot of people had issues with the first time around. So I've rushed a 0.26.1 release in the hopes of delivering a fix before anyone noticed I re-introduced that defect.

The problem was with multi-character mappings while in Eclipse's SmartInsert mode. A surprising number of people use mappings like "imap jj <ESC>" for exiting insert mode. There was a long-standing defect where entering the first character 'j' while inside parentheses, and not completing the mapping, would jump the cursor in front of that first 'j'. So if you had the 'jj' mapping and typed something innocuous like "for(int j=0;" you would end up with "for(int =0;j)".

The root of the issue is with Eclipse helpfully inserting that closing ')' for you. It somehow throws off Vrapper and offsets the cursor. This means I can't unit test it because it needs Eclipse interjecting itself for the defect to occur. Which means it's easy to miss if I re-introduce it.

So anyway, defect re-introduced, defect re-fixed (I hope).


0.26.0 Released

I made a couple more fixes and features since my last news post. I feel pretty confident in those changes and I don't have anything else to work on so I'm releasing a new version of Vrapper.

In addition to the file-opening operations described in the previous post, I've made the following changes:

  • Added support for Ctrl+W (delete word) in command-line modes
  • Added support for softtabstop setting
  • Added support for gd and gD in CDT and JDT plugins
    • Go to declaration, same as Ctrl+] in those plugins
  • Added ability to map function keys (F1-F20)
  • Display "X substitutions on Y lines" after a multi-line substitution
  • Fixed backspace in replace mode
  • Fixed single-character mappings in insert mode
  • Fixed '' (return to previous position) after jumping to a declaration (CDT/JDT only)
  • Fixed cursor position after yanking visually-selected text

And now for some shameless self-congratulation. Vrapper appears to be pretty popular. We now have over 10,000 installs via the Eclipse Marketplace! Also, our GitHub Project has been "starred" by over 250 users and has 40 forks. Very impressive. I take this as a sign that we're doing a good job. I'm glad everyone continues to enjoy Vrapper!


Updates to Unstable Update Site

I've updated the unstable update site with a few new features. Someone made an innocent feature request for the 'gf' command and I ended up implementing a bunch of features related to opening files. These features can be broken into two categories, the ':e' operations and the ':find' operations.

  • :e operations
    • :e <filename> - opens a file relative to current working directory
    • :cd <directory> - changes current working directory
    • :pwd - prints current working directory
    • :set autochdir - automatically change working directory to the parent of whatever file is active
  • :find operations
    • :find <filename> - opens a file from a directory in the path
    • :set path=<comma-delimited list of dirs> - list of directories to search in path
    • gf - takes filename under cursor, finds it in path, and opens the file
    • v_gf - similar to gf but takes the current visual selection as the filename

There are a couple things to note about my implementation. I see Vrapper as an Eclipse plugin and not a generic Vim replacement so each 'path' and 'current working directory' is rooted at the Eclipse Project root of whatever file is active. For example, ':e src/main/java/'. So, if you have two files open from two different projects then the project directories searched will depend on which file is active when you enter command-line mode.

I don't plan on ever searching absolute paths on the filesystem, but if people don't like being rooted at the Eclipse Project level I could be convinced to go up one level further so you could specify the Eclipse Project name as the first-level directory. For example, ':e MyProject/src/main/java/'.

Finally, ':e', ':find', and ':cd' all support tab-completion like in Vim. I'm hoping to also add tab-completion for command-line command names but I haven't done that yet.

Older Posts >>