You can't remap the existing split
command, as far as I know, but you can achieve the same same effect by writing a new function Split
and then using a command-mode abbreviation (cabbrev
).
Here's a function/mapping that should do what you want.
function! MySplit( fname )
let bufnum=bufnr(expand(a:fname))
let winnum=bufwinnr(bufnum)
if winnum != -1
" Jump to existing split
exe winnum . "wincmd w"
else
" Make new split as usual
exe "split " . a:fname
endif
endfunction
command! -nargs=1 Split :call MySplit("<args>")
cabbrev split Split
Note that this will only "check" for existing splits in the current tab, and hidden buffers are ignored. (However, it shouldn't be too difficult to add more cases to enhance this functionality.)