47066Re: Defining new visual-mode motions?
- Jun 1, 2007Hi,
On 5/31/07, Joseph Barker <jbarker@...> wrote:
> Hello, all.
> I was recently helping someone out with a vim script (camelcasemotion.vim)
> which adds additional motion commands (they treat camel-cased words
> (WordsLikeThis) as separate words, rather than as a single word). This is
> easy enough to do in normal and operator-pending mode. It seems to be very
> complicated to do this in visual mode, though -- calling a function (or
> anything that lets you move the cursor) seems to force you to leave visual
> mode (i.e., doing `vmap ,w :<C-U>call MoveCursor()` will move the cursor to
> the right place, but you're no longer in visual mode).
> My approach to this was to call the movement function, set a mark, select
> the previous visual block (with gv) and then jump to the mark that was
> previously set. The mapping that I created to deal with this is the
> vmap <silent> ,w @="\33:\25call
> This seems somewhat inelegant, and also clobbers a mark to be able to
> accomplish its magic. Is there an easier way to accomplish the same thing?
> It seems like there should be, but I was unable to figure one out.
Did you try specifying the <expr> attribute to the map command?
Something along the lines of
vnoremap <expr> ,w MoveCursor()
The MoveCursor() function should return a sequence of keys that will
position the cursor at the desired location.
- << Previous post in topic Next post in topic >>