我最近从 Emacs 切换到 Vim,所以这可能只是我完全误解了 Vim 的工作原理。
我在 Vim 中打开了一个文件并做了一些更改,但没有保存。然后我使用:e otherfile
打开第二个文件,并对该文件做了一些更改。同样,不保存更改,我想返回到第一个缓冲区。我正在使用:bn
,但当我这样做时,我得到了E37: No write since last change ...
。如果我这样做:bn!
,那么我可以改回第一个缓冲区。从第一个缓冲区,我可以用直接 改回第二个缓冲区:bn
,但每次我都必须:bn!
从第二个缓冲区转到第一个缓冲区。
set bufhidden=hide
我在 vimrc 中找到了,但如果我:set bufhidden?
在 Vim 中运行,就会得到bufhidden=
。这可能是问题吗?
编辑:我稍微缩小了问题的范围。在第一个文件中,:set bufhidden?
返回bufhidden=hide
,但在第二个文件中,返回bufhidden=
。这是怎么回事?我是不是错过了 Vim 缓冲区的一些基本知识?
编辑2:好的,它似乎set bufhidden=hide
仅适用于第一个打开的缓冲区。它需要在后续缓冲区中显式调用。我肯定完全没有抓住重点,因为这似乎没什么用。
答案1
好吧,我刚才太傻了。我不想set bufhidden=hide
在我的 vimrc 中使用它 - 那只是一个缓冲区。现在我已将其更改为set hidden
一切正常,我认为它应该如此。