On 08/20/2011 06:05 PM, AK wrote:
Hi, I was trying to change $ command to go to N chars before the end of
line, and found it surprisingly hard to do. Here's what I come up with:
func! EndOfLine()
exe "normal \<End>"
let c = v:count
let c2 = c - 1
let cmd = "normal " . c2 . "k" . c . "h"
if c | exe cmd | endif
endfu
nnoremap $ :<c-u>call EndOfLine()<cr>
Is there a better way to do this?
I got it working with:
:nnoremap <silent> $ :<c-u>exec 'norm
'.((virtcol('$')-v:count)<0?0:(virtcol('$')-v:count)).'<bar>'<cr>
Why is<c-u> needed there?
Since you're typing a number and then the mapping acts like
typing a colon, it will prepopulate the Ex command with the range
of lines as detailed at
:help N:
So if you type "4:" it will populate with
:.,.+3
The <c-u> is used to clear that out.
-tim
--
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