Quit vim, when a buffer has unsaved changes and is un-named?

At best you could call it a "transient" buffer (in memory but not associated with a specific file) but what you created with :vnew is not a "scratch" buffer.

In Vim, a "scratch" buffer is a normal buffer in which you set a bunch of local options. It can be done with a command like this:

:vnew | setlocal nobuflisted buftype=nofile bufhidden=wipe noswapfile

This happens when you have a modified hidden buffer. Use :qa! to exit anyway.

From :h :quit :

:q[uit]!        Quit without writing, also when currently visible
                buffers have changes.  Does not exit when this is the
                last window and there is a changed hidden buffer.
                In this case, the first changed hidden buffer becomes
                the current buffer.
                Use ":qall!" to exit always.

In case someone wants to reproduce it:

  • Start vim and modify the unnamed buffer
  • Edit another file (you might need to :set hidden), ie :e README
  • Try to exit with :q!

Tags:

Vim

Editor