When jumping on a tag, automatically split the window if the current buffer has been modified
From Vim Tips Wiki
created January 21, 2007 · complexity intermediate · author alpt · version n/a
Suppose you open file.c, you edit it and then you jump on a tag, defined in another file, using <C-]>.
If you didn't save the modified buffer you'll just get:
"E37: No write since last change (add ! to override)"
To overcome this, put the following code in your vimrc.
fun! SPLITAG() range let oldfile=expand("%:p") if &modified split endif exe "tag ". expand("<cword>") let curfile=expand("%:p") if curfile == oldfile let pos=getpos(".") if &modified " if we have split before: quit endif call setpos('.', pos) endif endfun nmap <C-]> :call SPLITAG()<CR>z.
To use this tip for 'gf' it should be sufficient to replace
exe "tag ". expand("<cword>")
exe "normal gf"
:set switchbuf=split :help 'switchbuf
CTRL-W CTRL-] doesn't give the same level of laziness of this tip. Why should I remember to use CTRL-W CTRL-], when I can press CTRL-] all the time?
and you won't see "E37: No write since last change (add ! to override)"
- Or, add "set confirm" and you will be prompted to save, abandon changes, or cancel.