created 2001 · complexity basic · author salmanhalim · version 5.7
I use the
:split command a lot -- both to open a second window containing the currently edited file and to edit a new file altogether (with the
:split <filename> option). however, I also like to be able to edit more than one file and calling
:sp multiple times is inconvenient. so, I created the following command, function and abbreviation:
function! Sp(...) if(a:0 == 0) sp else let i = a:0 while(i > 0) execute 'let file = a:' . i execute 'sp ' . file let i = i - 1 endwhile endif endfunction com! -nargs=* -complete=file Sp call Sp(<f-args>) cab sp Sp
This retains the behaviour of
:sp in that I can still type
:sp (the abbreviation takes care of that).
:Sp takes any number of files and opens them all up, one after the other.
The things I have noticed are that this causes 'sp' to be expanded to 'Sp' everywhere, even in search patterns. Also, prepending 'vert' doesn't work.
Comments[edit | edit source]
This is great! It saves the effort of typing multiple :sp under vim. I have two suggestions.
1. If I use
vim :Sp a b c
It results in 4 windows in vim. One is empty. Is this could be improved?
2. Is there a way to make a new_cmd that splits a window to 3, each one for a file specified in the command line? For example,
vim a b c :new_cmd
then I could see 3 windows in vim. One for a, one for b, and one for c.
Just before the endif, add this:
windo if expand('%') == '' | q | endif
Empty windows will be closed (if unmodified).
I added an option to split also vertically and made filenames expand through glob:
function! Sp(dir, ...) let split = 'sp' if a:dir == '1' let split = 'vsp' endif if(a:0 == 0) execute split else let i = a:0 while(i > 0) execute 'let files = glob (a:' . i . ')' for f in split (files, "\n") execute split . ' ' . f endfor let i = i - 1 endwhile windo if expand('%') == '' | q | endif endif endfunction com! -nargs=* -complete=file Sp call Sp(0, <f-args>) com! -nargs=* -complete=file Vsp call Sp(1, <f-args>)
This tip is superseded by
:argadd *.html :all
Starting in splits[edit | edit source]
If you want to start vim with several files in a splitted window, just type
vim -o a b c
for the horizontal split, and
vim -O a b c
for the vertical split.
To change between the windows opened
For further information, you can consult: