Tip 1230 Printable Monobook Previous Next
created 2006 · complexity basic · author Eric Arnold · version n/a
I wanted to do
:new file*.[ch]
and have each file show up in a new window, without having to mess up the args list or whatever. I came up with the following script.
command! -nargs=* -complete=file New call Foreach( "new %% ", <f-args> ) command! -nargs=* -complete=file Vnew call Foreach( "vnew %% ", <f-args> ) command! -nargs=* -complete=file Diff call Foreach( "vnew %% | diffthis", <f-args> ) " %% symbols are replaced with file/arg names function! Foreach( ... ) let cmd = a:1 "echomsg 'cmd='.cmd . ',0:'.a:0.',all:'.string(a:000) let fnames = [] for i in range( 1, a:0 - 1 ) let l = split( glob( a:000[i] ), "\n" ) if len( l ) < 1 let l = [ a:000[i] ] endif call extend( fnames, l ) endfor for fname in fnames let cmd1 = substitute( cmd, '%%', fname, 'g' ) exe cmd1 "echomsg cmd1 endfor endfunction
Comments[]
Is this to do :n file*.[ch] | sball
or with Vim 7 :n file*.[ch] | tab sball
sball
isn't workable if you already have a big buffer list of other stuff.