Stop, stop, stop.
This is not how Vim's tabs are designed to be used. In fact, they're misnamed. A better name would be "viewport" or "layout", because that's what a tab is—it's a different layout of windows of all of your existing buffers.
Trying to beat Vim into 1 tab == 1 buffer is an exercise in futility. Vim doesn't know or care and it will not respect it on all commands—in particular, anything that uses the quickfix buffer (:make
, :grep
, and :helpgrep
are the ones that spring to mind) will happily ignore tabs and there's nothing you can do to stop that.
Instead:
:set hidden
If you don't have this set already, then do so. It makes vim work like every other multiple-file editor on the planet. You can have edited buffers that aren't visible in a window somewhere.- Use
:bn
,:bp
,:b #
,:b name
, andctrl-6
to switch between buffers. I likectrl-6
myself (alone it switches to the previously used buffer, or#ctrl-6
switches to buffer number#
). - Use
:ls
to list buffers, or a plugin like MiniBufExpl or BufExplorer.