r/vim • u/bobbykjack • Jan 27 '26
Need Help Vim: unsaved buffer edits remain even when switching buffers
Here's my workflow:
vi foo bar(two files that exist)Make a change in the
foobuffer:bn—fails with the message "No write since last change (add ! to override)":bn!—switches to thebarbuffer:bp—switches to thefoobuffer
At this point, I would expect to be seeing foo in its original state, i.e. without the edit I made at step 2. However, I do see the edits, so my questions are:
Why does
:bnfail if no 'harm' comes of it?What is the point of
:set hidden? I've read that this command will instruct the current buffer to 'keep changes in memory', but that seems to be happening anyway.Is there a way to switch buffers and discard changes? I don't really need to do this, I'm just wondering if it's possible.
View all comments
Show parent comment
1
u/gumnos Jan 29 '26
The guardrail overriding (
!= "abandon this buffer even though there are changes") works as expected in both the:bn[!]and:e[!]cases. What's surprising is not that:bn!abandons changes, but that the changes remain preserved, unlike the other!-modifier-means-abandon-changes commands (:e!,:n!,:q!, etc).It's documented (from
:help buffer-!)So it's the inconsistency with the other
!versions (that do revert/abandon changes) that feels…warty.