> 
> The : in your mappings is what ends visual mode.
> 
> You can't avoid this, but you can go back into visual mode with the same region as you had, simply by adding 'gv' to the end of your mapping.
> 
> :help gv
Thanks Ben,
I modified my function and mappings to the following:
function! JumpToNextNonMatching(direction)
  let flags = ''
  if a:direction < 0
    let flags = flags . 'b'
  endif
  let ntimes = max([v:count, 1])
  let i = 1
  while i <= ntimes
    let i = i + 1
    let curr_line = getline('.')
    let spattern = '^[^' . curr_line[0] . '][^' . curr_line[1] . ']'
    call search(spattern, flags)
  endwhile
  nohlsearch
  if a:direction == 2
    mark >
  endif
  if a:direction == -2
    mark <
  endif
endfunction
nnoremap ,n :<C-U>call JumpToNextNonMatching(1)<CR>
nnoremap ,N :<C-U>call JumpToNextNonMatching(-1)<CR>
vnoremap ,n :<C-U>call JumpToNextNonMatching(2)<CR>gv
vnoremap ,N :<C-U>call JumpToNextNonMatching(-2)<CR>gv
This almost works, if I am moving backwards it progressively increases the visual selected area, but if I am moving forward the visually selected area remains the same because it seems that `gv` brings the cursor back to the beginning of the selection...
Any idea on how to make this work also for the forward movement?
Regards,
Jorge
-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
--- 
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
Saturday, September 28, 2013
Subscribe to:
Post Comments (Atom)
 
No comments:
Post a Comment