On 05/18/2011 03:32 AM, Ben Schmidt wrote:
Here's a simple solution for .vimrc that might work:

command! -nargs=1 -bang Edit call FileAndLine("e","<bang>",<f-args>)
command! -nargs=1 -bang Split call FileAndLine("sp","<bang>",<f-args>)
function! FileAndLine(cmd,bang,arg)
     let file=matchstr(a:arg,'.\{-}\ze:')
     let line=matchstr(a:arg,':\zs\d\+')
     exec a:cmd.a:bang." +".line." ".fnameescape(file)
endfunction

Then :Edit abc.vim:12 will turn into :e +12 abc.vim and :Split the same,
but into :sp not :e. Passes on a ! too.

Not tested much, and may have nasty edge cases, but should be a good
start.

Edge-cases that stick out to me involve non-digit text after the colon such as "C:\path\to\file.txt", "resident_evil:afterlife.mov" or "rockets:321blastoff.swf" This could be remedied by tightening the regexps:

  let file=matchstr(a:arg,'^.*\ze:\d\+$')
  let line=matchstr(a:arg,'^.*:\zs\d\+')

And there are failure conditions if the filename doesn't contain a colon, so you might put in a check something like

  if file==''
    let file=a:arg
  endif
  if line==''
    let line=1
  endif

before issuing the :exec call.

-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

Reply via email to