Reputation: 2184
I created a blank "scratch buffer" (i.e. not associated with a specific file) in vim, by using :vnew
. Then I played around with some text, now I simply want to exit the editor - not keeping the contents of this "scratch buffer".
When I type the command:
:q!
Vim gives me:
[No Name][+]
E37: No write since last change (add ! to override)
E162: No write since last change for buffer "[No Name]"
Press ENTER or type command to continue
How can I quit vim from this state?
Upvotes: 15
Views: 13608
Reputation: 24832
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:
:set hidden
), ie :e README
:q!
Upvotes: 25
Reputation: 196906
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
Upvotes: 7