I’m editing a file :e foo.
Now I’d like to save it, close the buffer (so I can go back to the state before I opened foo), using a command.
I have this right now:
command! GC silent execute ":wq" | silent execute ":close"
But if I didn’t have any buffer open before, I get this error:
E444: Cannot close last window
How can I close the window, such that if it’s the last window, it still closes it, and returns me back to the empty screen that you get when you just run vim?
I think you’re looking for the
:update+:bdeletecommand combination. The first persists changes if there are any, and the latter removes the buffer. If there are other split windows, the current one is closed. Otherwise, if you have other arguments / hidden buffers, the next one is displayed in the single window. If there is no other window, an empty buffer (like:enew) is shown.